ZK学习博客http://minjiechenjava.iteye.com/category/110729
//前台页面的zul文件
=======================================================================================
userxml
<?xml version="1.0" encoding="utf-8"?>
<?page id="userPage"?>
<?xel-method prefix="c" name="hasPermission"
class="com.linktel.linkFax.web.zk.util.AuthorityTools"
signature="com.linktel.linkFax.web.zk.util.AuthorityTools hasPermission(java.lang.String)"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="./userWin"?>
<window id="userWin" width="100%"
use="com.linktel.linkFax.web.zk.controller.UserController" xmlns:h="http://www.w3.org/1999/xhtml"
xmlns:n="http://www.zkoss.org/2005/zk/native" xmlns="http://www.zkoss.org/2005/zul"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd">
<listbox id="userLbx" model="@{userWin.userList}"
selectedItem="@{userWin.user}" onSelect="showUserEdit();"
fixedLayout="true" paginal="@{pagingUser}" >
<listhead>
<listheader label="用户名" align="center"></listheader>
<listheader label="手机号" align="center"></listheader>
<listheader label="分机号" align="center"></listheader>
<listheader label="职位" align="center"></listheader>
<listheader label="传真" align="center"></listheader>
<listheader label="启用状态" align="center"></listheader>
</listhead>
<listitem self="@{each=user}">
<listcell label="@{user.username}"></listcell>
<listcell label="@{user.phone}"></listcell>
<listcell label="@{user.exten}"></listcell>
<listcell label="@{user.position}"></listcell>
<listcell label="@{user.fax}"></listcell>
<listcell label="@{user.enabled,converter='com.linktel.linkFax.web.zk.converter.DataConverter'}"></listcell>
</listitem>
</listbox>
<paging id="pagingUser" pageSize="3"></paging>
<label value="公司名称:"></label>
<combobox id="cbxCom" model="@{userWin.companyList}">
<comboitem self="@{each=companyEdit}"
label="@{companyEdit.name}"
value="@{companyEdit.id}">
</comboitem>
</combobox>
<label value="部门名称:"></label>
<combobox id="cbxDep" model="@{userWin.deptList}"
selectedItem="@{userWin.deptEdit}">
<comboitem self="@{each=deptEdit}"
label="@{deptEdit.name}"
value="@{deptEdit.id}">
</comboitem>
</combobox>
</window>
=======================================================================================
- //后台绑定Controller类 下面有详细的注释
- publicclass UserController extends Window implements AfterCompose {
- protected AnnotateDataBinder binder;
- private User user = new User();
- private User u = new User();
- private Chinaregion province = new Chinaregion();
- private Chinaregion city = new Chinaregion();
- private Chinaregion district = new Chinaregion();
- private Role role = new Role();
- private Company company = new Company();
- protected Dept dept = new Dept();
- private Company companyEdit = new Company();
- private Dept deptEdit = new Dept();
- private Combobox cbxCompany;
- protected Listbox userLbx;
- protected Paging pagingUser;
- protected Combobox cbxProvince;
- protected Combobox cbxCity;
- protected Combobox cbxDistrict;
- private Combobox cbxDept;
- private Combobox cbxCom;
- private Combobox cbxDep;
- private List<Company> companyList;
- private List<User> userList;
- private List<Dept> deptList;
- private List<Role> roleList;
- private List<Chinaregion> provinceList;
- private List<Chinaregion> cityList;
- private List<Chinaregion> districtList;
- public Dept getDeptEdit() {
- return deptEdit;
- }
- publicvoid setDeptEdit(Dept deptEdit) {
- this.deptEdit = deptEdit;
- }
- public Dept getDept() {
- return dept;
- }
- public Chinaregion getDistrict() {
- return district;
- }
- publicvoid setDistrict(Chinaregion district) {
- this.district = district;
- }
- public Chinaregion getProvince() {
- return province;
- }
- public Chinaregion getCity() {
- return city;
- }
- publicvoid setCity(Chinaregion city) {
- this.city = city;
- }
- publicvoid setProvince(Chinaregion province) {
- this.province = province;
- }
- public Role getRole() {
- return role;
- }
- publicvoid setRole(Role role) {
- this.role = role;
- }
- publicvoid setDept(Dept dept) {
- this.dept = dept;
- }
- public List<Chinaregion> getProvinceList() {
- return provinceList;
- }
- publicvoid setProvinceList(List<Chinaregion> provinceList) {
- this.provinceList = provinceList;
- }
- public List<Chinaregion> getCityList() {
- return cityList;
- }
- publicvoid setCityList(List<Chinaregion> cityList) {
- this.cityList = cityList;
- }
- public List<Chinaregion> getDistrictList() {
- return districtList;
- }
- publicvoid setDistrictList(List<Chinaregion> districtList) {
- this.districtList = districtList;
- }
- public List<Role> getRoleList() {
- return roleList;
- }
- publicvoid setRoleList(List<Role> roleList) {
- this.roleList = roleList;
- }
- public Company getCompany() {
- return company;
- }
- publicvoid setCompany(Company company) {
- this.company = company;
- }
- public User getU() {
- return u;
- }
- publicvoid setU(User u) {
- this.u = u;
- }
- public List<Dept> getDeptList() {
- return deptList;
- }
- publicvoid setDeptList(List<Dept> deptList) {
- }
- public List<Company> getCompanyList() {
- return companyList;
- }
- publicvoid setCompanyList(List<Company> companyList) {
- this.companyList = companyList;
- }
- public User getUser() {
- return user;
- }
- public List<User> getUserList() {
- return userList;
- }
- publicvoid setUserList(List<User> userList) {
- this.userList = userList;
- }
- publicvoid setUser(User user) {
- this.user = user;
- }
- public Company getCompanyEdit() {
- return companyEdit;
- }
- publicvoid setCompanyEdit(Company companyEdit) {
- this.companyEdit = companyEdit;
- }
- /**
- * 组件创建时初始化的事件监听器
- */
- publicvoid init() {
- // UserService service= (UserService) SpringUtil.getBean("userService");
- // int count =service.countUser();
- // pagingUser.setTotalSize(count);
- pagingUser.addEventListener(ZulEvents.ON_PAGING,
- new UserPagingEventListener());
- userLbx.addEventListener(Events.ON_SELECT,
- new UserSelectedEventListener());
- cbxProvince.addEventListener(Events.ON_SELECT,
- new ProvinceSelectedEventListener());
- cbxCity.addEventListener(Events.ON_SELECT,
- new CitySelectedEventListener());
- cbxCom.addEventListener(Events.ON_SELECT,
- new EditCompanySelectedEventListener());
- if (judgeCompontent(cbxCompany)) {
- cbxCompany.addEventListener(Events.ON_SELECT,
- new CompanySelectedEventListener());
- }
- }
- /**
- * 初始化所属公司下的部门列表
- *
- * @param company
- */
- publicvoid initDept(Company company) {
- DeptService service = (DeptService) SpringUtil.getBean("deptService");
- deptList = service.getDeptsByCoId(company);
- binder.loadComponent(cbxDep);
- }
- /**
- * 初始化公司列表
- */
- publicvoid initCompany() {
- CompanyService service = (CompanyService) SpringUtil .getBean("companyService");
- companyList = service.getCompanyAll();
- }
- /**
- * 动态绑定变量值
- */
- @Override
- publicvoid afterCompose() {
- Components.wireVariables(this, this);
- Components.addForwards(this, this);
- initiaData();
- }
- class UserSelectedEventListener implements EventListener {
- @SuppressWarnings("unchecked")
- publicvoid onEvent(Event event) throws Exception {
- String cId = user.getCoid();
- // 获取Combobox组件中的Comboitem所有的子项集合
- List<Comboitem> comsItems = cbxCom.getChildren();
- // 使用List接口的迭代器,迭代每个Comboitem对象
- Iterator<Comboitem> comsIt = comsItems.iterator();
- // 是否有下个对象
- while (comsIt.hasNext()) {
- // 迭代对象转换成Comboitem对象
- Comboitem item = comsIt.next();
- // 判断item中的值是否相等,如果相等
- if (StringUtils.equals((String) item.getValue(), cId)) {
- // 如果相等 绑定并且选中该对象
- cbxCom.setSelectedItemApi(item);
- // 把该事件放入时间列队的末尾,在所有事件都处理完 之后,将会立即处理该事件
- Events.postEvent(Events.ON_SELECT, cbxCom, null);
- // 初始化部门对象
- Company c = new Company();
- c.setId(cId);
- initDept(c);
- break;
- }
- }
- }
- }
- class EditCompanySelectedEventListener implements EventListener {
- publicvoid onEvent(Event event) throws Exception {
- if (deptList == null || deptList.isEmpty())
- return;
- // 循环迭代Dept集合对象
- for (Iterator<Dept> it = deptList.iterator(); it.hasNext();) {
- Dept each = it.next();
- if (StringUtils.equals(user.getDeptid(), each.getId())) {
- deptEdit = each;// 赋值给cbxDep绑定的对象;
- // 重新绑定对象
- binder.loadComponent(cbxDep);
- return;
- }
- }
- }
- }