Summary
We will see how to fill the second combo box based on first combo box selection using MVC Data binding.
Project Structure
Now run the demo.zul file . Here is the output.
We will see how to fill the second combo box based on first combo box selection using MVC Data binding.
ZK Version : ZK 6
Project Name :ComboBoxTwoMVC
Project Structure
Demo.zul
1: <?page title="new page title" contentType="text/html;charset=UTF-8"?>
2: <?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?>
3: <zk>
4: <window id="myWin" title="new page title" border="normal" apply="mydomainUI.DemoCtrl">
5: Department:
6: <combobox id="depart" width="200px"
7: model="@{myWin$DemoCtrl.allDepartments}" selectedItem="@{myWin$DemoCtrl.selected}" >
8: <comboitem self="@{each='d'}" label="@{d.departName}"
9: value="@{d.departCode}" />
10: </combobox>
11: Users:
12: <combobox id="users" width="200px"
13: model="@{myWin$DemoCtrl.allUsers}">
14: <comboitem self="@{each='item'}" label="@{item.userName}"
15: value="@{item.userCode}" />
16: </combobox>
17: </window>
18: </zk>
1: <?page title="new page title" contentType="text/html;charset=UTF-8"?>
2: <?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?>
3: <zk>
4: <window id="myWin" title="new page title" border="normal" apply="mydomainUI.DemoCtrl">
5: Department:
6: <combobox id="depart" width="200px"
7: model="@{myWin$DemoCtrl.allDepartments}" selectedItem="@{myWin$DemoCtrl.selected}" >
8: <comboitem self="@{each='d'}" label="@{d.departName}"
9: value="@{d.departCode}" />
10: </combobox>
11: Users:
12: <combobox id="users" width="200px"
13: model="@{myWin$DemoCtrl.allUsers}">
14: <comboitem self="@{each='item'}" label="@{item.userName}"
15: value="@{item.userCode}" />
16: </combobox>
17: </window>
18: </zk>
Department.java
1: package mydomain;
2:
3: public class Department {
4:
5: private String departCode;
6: private String departName;
7:
8: public String getDepartCode() {
9: return departCode;
10: }
11: public void setDepartCode(String departCode) {
12: this.departCode = departCode;
13: }
14: public String getDepartName() {
15: return departName;
16: }
17: public void setDepartName(String departName) {
18: this.departName = departName;
19: }
20:
21: }
1: package mydomain;
2:
3: public class Department {
4:
5: private String departCode;
6: private String departName;
7:
8: public String getDepartCode() {
9: return departCode;
10: }
11: public void setDepartCode(String departCode) {
12: this.departCode = departCode;
13: }
14: public String getDepartName() {
15: return departName;
16: }
17: public void setDepartName(String departName) {
18: this.departName = departName;
19: }
20:
21: }
users.java
1: package mydomain;
2:
3: public class users {
4:
5: private String userCode;
6: private String userName;
7: private String userPassword;
8: private String active;
9: private String firstName;
10: private String lastName;
11: private String homePhone;
12: private String mobilePhone;
13:
14: public String getFirstName() {
15: return firstName;
16: }
17:
18: public void setFirstName(String firstName) {
19: this.firstName = firstName;
20: }
21:
22: public String getLastName() {
23: return lastName;
24: }
25:
26: public void setLastName(String lastName) {
27: this.lastName = lastName;
28: }
29:
30: public String getHomePhone() {
31: return homePhone;
32: }
33:
34: public void setHomePhone(String homePhone) {
35: this.homePhone = homePhone;
36: }
37:
38: public String getMobilePhone() {
39: return mobilePhone;
40: }
41:
42: public void setMobilePhone(String mobilePhone) {
43: this.mobilePhone = mobilePhone;
44: }
45:
46: public String getUserCode() {
47: return userCode;
48: }
49:
50: public void setUserCode(String userCode) {
51: this.userCode = userCode;
52: }
53:
54: public String getUserName() {
55: return userName;
56: }
57:
58: public void setUserName(String userName) {
59: this.userName = userName;
60: }
61:
62: public String getUserPassword() {
63: return userPassword;
64: }
65:
66: public void setUserPassword(String userPassword) {
67: this.userPassword = userPassword;
68: }
69:
70: public String getActive() {
71: return active;
72: }
73:
74: public void setActive(String active) {
75: this.active = active;
76: }
77:
78: }
1: package mydomain;
2:
3: public class users {
4:
5: private String userCode;
6: private String userName;
7: private String userPassword;
8: private String active;
9: private String firstName;
10: private String lastName;
11: private String homePhone;
12: private String mobilePhone;
13:
14: public String getFirstName() {
15: return firstName;
16: }
17:
18: public void setFirstName(String firstName) {
19: this.firstName = firstName;
20: }
21:
22: public String getLastName() {
23: return lastName;
24: }
25:
26: public void setLastName(String lastName) {
27: this.lastName = lastName;
28: }
29:
30: public String getHomePhone() {
31: return homePhone;
32: }
33:
34: public void setHomePhone(String homePhone) {
35: this.homePhone = homePhone;
36: }
37:
38: public String getMobilePhone() {
39: return mobilePhone;
40: }
41:
42: public void setMobilePhone(String mobilePhone) {
43: this.mobilePhone = mobilePhone;
44: }
45:
46: public String getUserCode() {
47: return userCode;
48: }
49:
50: public void setUserCode(String userCode) {
51: this.userCode = userCode;
52: }
53:
54: public String getUserName() {
55: return userName;
56: }
57:
58: public void setUserName(String userName) {
59: this.userName = userName;
60: }
61:
62: public String getUserPassword() {
63: return userPassword;
64: }
65:
66: public void setUserPassword(String userPassword) {
67: this.userPassword = userPassword;
68: }
69:
70: public String getActive() {
71: return active;
72: }
73:
74: public void setActive(String active) {
75: this.active = active;
76: }
77:
78: }
DepartmentDAO.java
1: package domainDAO;
2: import java.util.ArrayList;
3: import java.util.List;
4: import mydomain.Department;
5:
6: public class DepartmentDAO {
7:
8: public List<Department> getAllDepartments() {
9:
10: List<Department> allDepartments = new ArrayList<Department>();
11:
12: Department d1 = new Department();
13: d1.setDepartName("Finance");
14: d1.setDepartCode("D101");
15: allDepartments.add(d1);
16:
17: d1 = new Department();
18: d1.setDepartName("Sales");
19: d1.setDepartCode("D102");
20: allDepartments.add(d1);
21:
22: return allDepartments;
23: }
24:
25: }
1: package domainDAO;
2: import java.util.ArrayList;
3: import java.util.List;
4: import mydomain.Department;
5:
6: public class DepartmentDAO {
7:
8: public List<Department> getAllDepartments() {
9:
10: List<Department> allDepartments = new ArrayList<Department>();
11:
12: Department d1 = new Department();
13: d1.setDepartName("Finance");
14: d1.setDepartCode("D101");
15: allDepartments.add(d1);
16:
17: d1 = new Department();
18: d1.setDepartName("Sales");
19: d1.setDepartCode("D102");
20: allDepartments.add(d1);
21:
22: return allDepartments;
23: }
24:
25: }
usersDAO.java
1: package domainDAO;
2:
3: import java.util.ArrayList;
4: import java.util.List;
5: import mydomain.users;
6:
7: public class usersDAO {
8:
9: public List<users> getUsers(String departMentCode) {
10:
11: if (departMentCode == "D101")
12: return getFinanceUsers();
13:
14: if (departMentCode == "D102")
15: return getSalesUsers();
16:
17: return null;
18: }
19:
20: public List<users> getFinanceUsers() {
21:
22: List<users> allUsers = new ArrayList<users>();
23:
24: users u1 = new users();
25: u1.setUserName("John");
26: u1.setUserCode("User101");
27: u1.setUserPassword("xxxxx");
28: u1.setFirstName("JohnFirstName");
29: u1.setLastName("JohnLastName");
30: u1.setHomePhone("1111111111");
31: u1.setMobilePhone("222222");
32: u1.setActive("Y");
33: allUsers.add(u1);
34:
35: u1 = new users();
36: u1.setUserName("Robert");
37: u1.setUserCode("User102");
38: u1.setUserPassword("xxxxx");
39: u1.setActive("Y");
40: u1.setFirstName("RobertFirstName");
41: u1.setLastName("RobertLastName");
42: u1.setHomePhone("53534343");
43: u1.setMobilePhone("4534343");
44: allUsers.add(u1);
45:
46: return allUsers;
47: }
48:
49: public List<users> getSalesUsers() {
50:
51: List<users> allUsers = new ArrayList<users>();
52:
53: users u1 = new users();
54: u1.setUserName("Sean");
55: u1.setUserCode("User105");
56: u1.setUserPassword("xxxxx");
57: u1.setFirstName("SeanFirstName");
58: u1.setLastName("SeanLastName");
59: u1.setHomePhone("1111111111");
60: u1.setMobilePhone("222222");
61: u1.setActive("Y");
62: allUsers.add(u1);
63:
64: u1 = new users();
65: u1.setUserName("Marry");
66: u1.setUserCode("User112");
67: u1.setUserPassword("xxxxx");
68: u1.setActive("Y");
69: u1.setFirstName("MarryFirstName");
70: u1.setLastName("MarryLastName");
71: u1.setHomePhone("53534343");
72: u1.setMobilePhone("4534343");
73: allUsers.add(u1);
74:
75: return allUsers;
76: }
77:
78: }
DemoCtrl.java
1: package mydomainUI;
2:
3: import java.util.ArrayList;
4: import org.zkoss.zul.Combobox;
5: import org.zkoss.zul.ListModelList;
6:
7: import java.util.List;
8:
9: import org.zkoss.zk.ui.Component;
10: import org.zkoss.zk.ui.event.Event;
11: import org.zkoss.zk.ui.util.GenericForwardComposer;
12: import org.zkoss.zul.Messagebox;
13: import domainDAO.DepartmentDAO;
14: import domainDAO.usersDAO;
15: import mydomain.Department;
16: import mydomain.users;
17:
18: @SuppressWarnings({ "rawtypes", "serial" })
19: public class DemoCtrl extends GenericForwardComposer{
20:
21: private List<users> allUsers = new ArrayList<users>();
22: private Department selectedDepartment ;
23: private List<Department> allDepartments = new ArrayList<Department>();
24: private Combobox users;
25:
26: public List<users> getAllUsers() {
27: return allUsers;
28: }
29:
30: public void setAllUsers(List<users> allUsers) {
31: this.allUsers = allUsers;
32: }
33:
34: public List<Department> getAllDepartments() {
35: return allDepartments;
36: }
37:
38:
39: public void setAllDepartments(List<Department> allDepartments) {
40: this.allDepartments = allDepartments;
41: }
42:
43:
44: public Department getSelected() {
45: return selectedDepartment;
46: }
47:
48: public void setSelected(Department selectedDepartment) {
49: this.selectedDepartment = selectedDepartment;
50: }
51:
52: @SuppressWarnings("unchecked")
53: public void doAfterCompose(Component comp) throws Exception {
54: super.doAfterCompose(comp);
55: // Load the department first
56: allDepartments = new DepartmentDAO().getAllDepartments();
57: }
58:
59: public void onSelect$depart(Event evt)
60: {
61: allUsers = new usersDAO().getUsers(selectedDepartment.getDepartCode());
62: users.setModel(new ListModelList(allUsers));
63: }
64:
65:
66: }
1: package domainDAO;
2:
3: import java.util.ArrayList;
4: import java.util.List;
5: import mydomain.users;
6:
7: public class usersDAO {
8:
9: public List<users> getUsers(String departMentCode) {
10:
11: if (departMentCode == "D101")
12: return getFinanceUsers();
13:
14: if (departMentCode == "D102")
15: return getSalesUsers();
16:
17: return null;
18: }
19:
20: public List<users> getFinanceUsers() {
21:
22: List<users> allUsers = new ArrayList<users>();
23:
24: users u1 = new users();
25: u1.setUserName("John");
26: u1.setUserCode("User101");
27: u1.setUserPassword("xxxxx");
28: u1.setFirstName("JohnFirstName");
29: u1.setLastName("JohnLastName");
30: u1.setHomePhone("1111111111");
31: u1.setMobilePhone("222222");
32: u1.setActive("Y");
33: allUsers.add(u1);
34:
35: u1 = new users();
36: u1.setUserName("Robert");
37: u1.setUserCode("User102");
38: u1.setUserPassword("xxxxx");
39: u1.setActive("Y");
40: u1.setFirstName("RobertFirstName");
41: u1.setLastName("RobertLastName");
42: u1.setHomePhone("53534343");
43: u1.setMobilePhone("4534343");
44: allUsers.add(u1);
45:
46: return allUsers;
47: }
48:
49: public List<users> getSalesUsers() {
50:
51: List<users> allUsers = new ArrayList<users>();
52:
53: users u1 = new users();
54: u1.setUserName("Sean");
55: u1.setUserCode("User105");
56: u1.setUserPassword("xxxxx");
57: u1.setFirstName("SeanFirstName");
58: u1.setLastName("SeanLastName");
59: u1.setHomePhone("1111111111");
60: u1.setMobilePhone("222222");
61: u1.setActive("Y");
62: allUsers.add(u1);
63:
64: u1 = new users();
65: u1.setUserName("Marry");
66: u1.setUserCode("User112");
67: u1.setUserPassword("xxxxx");
68: u1.setActive("Y");
69: u1.setFirstName("MarryFirstName");
70: u1.setLastName("MarryLastName");
71: u1.setHomePhone("53534343");
72: u1.setMobilePhone("4534343");
73: allUsers.add(u1);
74:
75: return allUsers;
76: }
77:
78: }
1: package mydomainUI;
2:
3: import java.util.ArrayList;
4: import org.zkoss.zul.Combobox;
5: import org.zkoss.zul.ListModelList;
6:
7: import java.util.List;
8:
9: import org.zkoss.zk.ui.Component;
10: import org.zkoss.zk.ui.event.Event;
11: import org.zkoss.zk.ui.util.GenericForwardComposer;
12: import org.zkoss.zul.Messagebox;
13: import domainDAO.DepartmentDAO;
14: import domainDAO.usersDAO;
15: import mydomain.Department;
16: import mydomain.users;
17:
18: @SuppressWarnings({ "rawtypes", "serial" })
19: public class DemoCtrl extends GenericForwardComposer{
20:
21: private List<users> allUsers = new ArrayList<users>();
22: private Department selectedDepartment ;
23: private List<Department> allDepartments = new ArrayList<Department>();
24: private Combobox users;
25:
26: public List<users> getAllUsers() {
27: return allUsers;
28: }
29:
30: public void setAllUsers(List<users> allUsers) {
31: this.allUsers = allUsers;
32: }
33:
34: public List<Department> getAllDepartments() {
35: return allDepartments;
36: }
37:
38:
39: public void setAllDepartments(List<Department> allDepartments) {
40: this.allDepartments = allDepartments;
41: }
42:
43:
44: public Department getSelected() {
45: return selectedDepartment;
46: }
47:
48: public void setSelected(Department selectedDepartment) {
49: this.selectedDepartment = selectedDepartment;
50: }
51:
52: @SuppressWarnings("unchecked")
53: public void doAfterCompose(Component comp) throws Exception {
54: super.doAfterCompose(comp);
55: // Load the department first
56: allDepartments = new DepartmentDAO().getAllDepartments();
57: }
58:
59: public void onSelect$depart(Event evt)
60: {
61: allUsers = new usersDAO().getUsers(selectedDepartment.getDepartCode());
62: users.setModel(new ListModelList(allUsers));
63: }
64:
65:
66: }
Now run the demo.zul file . Here is the output.