In this example, we will see how we can data bind Combo box using MVC Data binding (ZK's annotated data binding manager utility)
ZK Version : ZK 6
Project Name :ComboxBoxMVC
Project Structure :
Example1.zul
users.java
Example1Ctrl
ZK Version : ZK 6
Project Name :ComboxBoxMVC
Project Structure :
Example1.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.Example1Ctrl ">
5: <combobox id="list" width="200px"
6: model="@{myWin$Example1Ctrl.users}"
7: selectedItem="@{myWin$Example1Ctrl.selected}" >
8: <comboitem self="@{each='item'}" label="@{item.userName}"
9: value="@{item.userCode}" description="The simplest way to make Web applications rich" />
10: </combobox>
11: </window>
12: </zk>
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: }
Example1Ctrl
1: package mydomainUI;
2:
3: import java.util.ArrayList;
4: import java.util.List;
5:
6: import mydomain.users;
7:
8: import org.zkoss.zk.ui.Component;
9: import org.zkoss.zk.ui.event.Event;
10: import org.zkoss.zk.ui.util.GenericForwardComposer;
11: import org.zkoss.zul.Messagebox;
12:
13: @SuppressWarnings({ "rawtypes", "serial" })
14: public class Example1Ctrl extends GenericForwardComposer {
15:
16: private List<users> usersAll = new ArrayList<users>();
17: private users curSelectedUser;
18:
19: public users getSelected() {
20: return curSelectedUser;
21: }
22:
23: public void setSelected(users sel) {
24: curSelectedUser = sel;
25: }
26:
27: @SuppressWarnings("unchecked")
28: public void doAfterCompose(Component comp) throws Exception {
29: super.doAfterCompose(comp);
30: users u1 = new users();
31: u1.setUserName("John");
32: u1.setUserCode("User101");
33: u1.setUserPassword("xxxxx");
34: u1.setFirstName("JohnFirstName");
35: u1.setLastName("JohnLastName");
36: u1.setHomePhone("1111111111");
37: u1.setMobilePhone("222222");
38: u1.setActive("Y");
39: usersAll.add(u1);
40:
41: u1 = new users();
42: u1.setUserName("Robert");
43: u1.setUserCode("User102");
44: u1.setUserPassword("xxxxx");
45: u1.setActive("Y");
46: u1.setFirstName("RobertFirstName");
47: u1.setLastName("RobertLastName");
48: u1.setHomePhone("53534343");
49: u1.setMobilePhone("4534343");
50: usersAll.add(u1);
51:
52: u1 = new users();
53: u1.setUserName("Sean");
54: u1.setUserCode("User103");
55: u1.setUserPassword("xxxxx");
56: u1.setActive("N");
57: u1.setFirstName("SeanFirstName");
58: u1.setLastName("SeanLastName");
59: u1.setHomePhone("643434343");
60: u1.setMobilePhone("64343445434");
61: usersAll.add(u1);
62:
63: u1 = new users();
64: u1.setUserName("Marry");
65: u1.setUserCode("User104");
66: u1.setUserPassword("xxxxx");
67: u1.setActive("N");
68: u1.setFirstName("MarryFirstName");
69: u1.setLastName("MarryLastName");
70: u1.setHomePhone("8644344");
71: u1.setMobilePhone("44333");
72: usersAll.add(u1);
73: curSelectedUser = new users();
74: }
75:
76: public List<users> getUsers() {
77: return usersAll;
78: }
79:
80: public void onSelect$list(Event evt) {
81:
82: Messagebox.show("Selected User Code " + curSelectedUser.getUserCode());
83: }
84:
85: }
Download the source as war file
Reference
http://www.zkoss.org/javadoc/latest/zk/org/zkoss/zkplus/databind/AnnotateDataBinder.html
http://books.zkoss.org/wiki/Small_Talks/2010/July/Improved_AnnotateDataBinder_Initializer
http://books.zkoss.org/wiki/ZK_Essentials/Displaying_Information_in_a_Grid_Using_Data_Binding/The_Concept_of_Data_Binding
http://zkfiddle.org/sample/38ipduo/39-Databind-example#source-1