- 浏览: 448128 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (108)
- Ibatis (0)
- ZK (13)
- 设计模式 (3)
- Java编程 (21)
- 正则表达式 (2)
- 开发小续 (2)
- 杂谈 (1)
- 数据库 (6)
- Hibernate (6)
- Struts 2 (2)
- Spring (2)
- 版本控制 (4)
- Subversion (1)
- Myeclipse (1)
- EL (1)
- jsp (1)
- CAS (1)
- SSO (1)
- Restful Web Service (3)
- jersey (2)
- jersey与spring (1)
- web service框架 (1)
- 系统分析 (1)
- Subversion windows service (1)
- tomcat (1)
- PermGen Space (1)
- 编程心得 (1)
- google map api (1)
- springmvc (1)
- ajax (1)
- Hibernate QBC (1)
- oracle oracle10g (1)
- RBAC 权限设计 (1)
- springsecurity 3 (1)
- JPA (1)
- JPA j2ee (1)
- maven java (1)
- Jquery框架 UI框架 (1)
- printcss (1)
- java reflect 反射 (1)
- Jquery框架 UI框架 3scschool (1)
- collabnet Subversion (1)
- linux redhat (1)
- mysql (3)
- spring spring-data-jpa (1)
- Jquery AjaxForm (1)
- Jquery Map (1)
- linux (3)
- linux nginx openssl zlib pcre (1)
- linux jdk (1)
- 物联网技术 嵌入式 C# (1)
- oracle 数据库 (1)
- oracle (5)
- maven (1)
- java 定时器 (1)
- swing (1)
- java (2)
- 短信接口 (1)
- DBUtils (1)
- JDBC (1)
- javascript json (1)
- shiro (1)
- 权限系统 (1)
- 嵌入式 (1)
- 树莓派 (1)
- python (1)
- Github (1)
- 代码托管 (1)
- 产品设计 (2)
- 产品需求 (2)
- BRD (1)
- MRD (1)
- PRD (1)
- DRD (1)
- FRD (1)
- GIS (1)
- SOA (1)
- 网站资源 (1)
- 骆驼 (1)
- 黑客技术资源 (1)
- 网络安全资源 (1)
- 个人修炼 (1)
- Angular2 (1)
- Nodejs Krakenjs (1)
最新评论
-
GeorgeFeng:
学习啦,感谢
RBAC用户权限管理数据库设计 -
徜徉の小溪:
yuanliangding 写道请求进来时,创建的对象都不是由 ...
基于RESTful Web Service 的Jersey框架与Spring完美整合 -
yuanliangding:
请求进来时,创建的对象都不是由Spring弄出来的。。
基于RESTful Web Service 的Jersey框架与Spring完美整合 -
Ripin_Yan:
我已经按照你的xml这个顺序配置了,结果还是中文乱码。是还有什 ...
SpringMVC使用注解@ResponseBody返回json中文乱码 -
王静娜:
作者的实体图画的很好很有条理,但是个人觉得用户组对应的是资源, ...
RBAC用户权限管理数据库设计
//前台页面的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}" fixedLayout="true" paginal="@{pagingUser}" selectedItem="@{userWin.user}" onSelect="showUserEdit();"> <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类 下面有详细的注释 public class 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; } public void setDeptEdit(Dept deptEdit) { this.deptEdit = deptEdit; } public Dept getDept() { return dept; } public Chinaregion getDistrict() { return district; } public void setDistrict(Chinaregion district) { this.district = district; } public Chinaregion getProvince() { return province; } public Chinaregion getCity() { return city; } public void setCity(Chinaregion city) { this.city = city; } public void setProvince(Chinaregion province) { this.province = province; } public Role getRole() { return role; } public void setRole(Role role) { this.role = role; } public void setDept(Dept dept) { this.dept = dept; } public List<Chinaregion> getProvinceList() { return provinceList; } public void setProvinceList(List<Chinaregion> provinceList) { this.provinceList = provinceList; } public List<Chinaregion> getCityList() { return cityList; } public void setCityList(List<Chinaregion> cityList) { this.cityList = cityList; } public List<Chinaregion> getDistrictList() { return districtList; } public void setDistrictList(List<Chinaregion> districtList) { this.districtList = districtList; } public List<Role> getRoleList() { return roleList; } public void setRoleList(List<Role> roleList) { this.roleList = roleList; } public Company getCompany() { return company; } public void setCompany(Company company) { this.company = company; } public User getU() { return u; } public void setU(User u) { this.u = u; } public List<Dept> getDeptList() { return deptList; } public void setDeptList(List<Dept> deptList) { } public List<Company> getCompanyList() { return companyList; } public void setCompanyList(List<Company> companyList) { this.companyList = companyList; } public User getUser() { return user; } public List<User> getUserList() { return userList; } public void setUserList(List<User> userList) { this.userList = userList; } public void setUser(User user) { this.user = user; } public Company getCompanyEdit() { return companyEdit; } public void setCompanyEdit(Company companyEdit) { this.companyEdit = companyEdit; } /** * 组件创建时初始化的事件监听器 */ public void 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 */ public void initDept(Company company) { DeptService service = (DeptService) SpringUtil.getBean("deptService"); deptList = service.getDeptsByCoId(company); binder.loadComponent(cbxDep); } /** * 初始化公司列表 */ public void initCompany() { CompanyService service = (CompanyService) SpringUtil .getBean("companyService"); companyList = service.getCompanyAll(); } /** * 动态绑定变量值 */ @Override public void afterCompose() { Components.wireVariables(this, this); Components.addForwards(this, this); initiaData(); } class UserSelectedEventListener implements EventListener { @SuppressWarnings("unchecked") public void 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 { public void 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; } } } }
==========================================================================================
发表评论
-
ZK fulfill 属性的延迟加载组建
2010-08-19 11:01 1881fulfill属性 fulfill属 ... -
ZK加载页面的生命周期
2010-08-04 17:26 2174加载页面的活动周期 ... -
ZK使用JQuery实现动态效果
2010-07-15 11:26 4035<?xml version=" ... -
(转)ZK框架初步总结【二】---关于server-push
2010-07-05 09:32 2539关于ZK框架的服务推 ... -
ZK 获取客户端事件状态的问题 ?
2010-07-02 17:37 2287ZK Client Programming, 在客户端编程.触 ... -
ZK客户端编程之Checkbox复选框的(全选/全不选)
2010-07-01 13:16 4787on June 30, 2010, I have met a ... -
Struts,ZK 各实现细粒度的权限验证控制(下)
2010-06-28 16:05 1273上篇,所说为什 ... -
Struts,ZK 各实现细粒度的权限验证控制(上)
2010-06-28 15:26 1814权限控制我们有很多种实现的方法,而对于不同的UI编 ... -
ZK 5.0.2版本中constraint 验证不符合规范时却不能中断zul向后台提交
2010-06-24 16:17 1995ZK 5.0.2版本中constraint 验证不符合规范时却 ... -
ZK 3.6.4和5.0.2版本servlet线程与事件处理线程的配置区别
2010-06-22 13:32 2092默认情况下,ZK的过程中一个独立的线程的事件称为事 ... -
ZK 5.0.2 报错信息的Bug
2010-06-04 13:55 3128xml <listbox id=&q ... -
ZK Paging组件实现动态分页,描述很通俗易懂
2010-05-28 11:41 5212zul页面: zul 页面: < ...
相关推荐
级联菜单是一种常见的Web应用程序用户界面元素,它允许用户从多个选项中选择一个或多个项目。动态级联菜单是指可以根据实际情况动态生成选项的级联菜单。下面将对该技术进行详细的解释。 级联菜单的原理 级联菜单...
级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单...
在.NET框架中,级联下拉菜单(Cascading Dropdown)是一种常见的用户界面设计,它允许用户在选择一个选项后,第二个或更多的下拉菜单会根据前一个选择更新其选项。这种交互方式常用于数据库相关的应用程序,以减少...
在JavaScript的帮助下,我们可以创建复杂的动态下拉菜单,比如三级级联的下拉菜单。这种菜单允许用户逐步导航到深层的选项,使得大量数据的分类和选择更为便捷。 **JavaScript三级下拉菜单的基本原理** JavaScript...
这个场景中,我们利用数据库存储数据,并通过后端处理逻辑动态生成这些下拉菜单。下面将详细介绍如何使用MySQL数据库来实现这一功能。 首先,我们需要创建一个数据库表来存储级联菜单的数据。假设我们有一个名为`...
网上找了很久这种菜单,浪费了很多时间,实在没办法,只好老老实实去官网上按说明弄了一个,并更新了,jquery1.5.2, 希望给有需要的朋友可以节约一点时间,欢迎交流,qq:170262
在本文中,我们将深入探讨如何使用layui框架中的tree模块创建一个功能完备的树形下拉菜单。layui是一款轻量级的前端UI框架,它提供了丰富的组件和API,使得开发者能够快速构建美观且响应式的Web应用。在“layui树形...
5. **级联事件处理**:在`onChange`事件中,我们根据用户选择的省份动态填充市的下拉菜单。同理,当市被选中时,填充区的下拉菜单。这一步需要递归地遍历数据结构,找到对应级别的子项。 6. **禁用未激活的下拉**:...
JavaScript动态级联下拉列表框是一种常见的前端交互设计,它允许用户在选择一个选项后,根据选择的结果动态更新下一个下拉列表框的内容。这种技术在数据筛选、表单填写等场景中广泛应用,能够提高用户体验,减少不必...
在JavaScript中,下拉级联(Cascading Dropdown)是一种常见的前端交互设计,它用于创建一组相关联的下拉菜单,其中一个下拉菜单的选择会影响另一个下拉菜单的选项。这样的设计常见于数据筛选、地区选择等场景,可以...
在Excel中,设置下拉选项、级联以及列头锁定是提高工作效率和数据一致性的重要功能。以下是关于这些功能的详细说明: ### 设置简单下拉选项 无论是WPS还是Office,都可以通过两种方法来实现。 #### 方法1:设置...
通过这种方式,我们可以创建出一个动态的、响应式的级联下拉菜单,用户在选择一个选项后,无需刷新页面,第二个下拉菜单就能自动更新为与之关联的选项。这种交互方式提高了用户体验,同时也减轻了服务器的压力。在...
JavaScript四级级联下拉菜单是一种常见的网页交互设计,它允许用户在多个下拉菜单中进行选择,逐级筛选出最终的选项。这种设计通常用于表示层次结构的数据,如国家、省份、城市和区域等地理信息,也可以应用于其他...
在IT领域,级联下拉菜单(Cascading Dropdown)是一种常见的交互设计,它用于创建一个联动的效果,用户在一个下拉菜单中选择一项后,另一个相关的下拉菜单会更新其选项,以显示与前一次选择相关的内容。在这个场景中...
这里我们讨论的“JQuery写的日期级联下拉菜单”是一个利用jQuery库实现的交互式用户界面组件,允许用户通过三个连续的下拉列表分别选择年、月和日。这种设计使得用户能够快速、准确地输入日期,同时保持页面的简洁性...
在IT领域,动态实现下拉列表框的三级级联查询是一项常见的前端交互功能,它能够为用户提供更加便捷的导航和筛选体验。在这个场景中,我们使用JSP(JavaServer Pages)脚本语言来实现这一功能。JSP是Java平台上的...
第一个下拉菜单的选项应由顶级分类填充,第二个下拉菜单的选项则依赖于第一个下拉菜单的选择,通过JavaScript或jQuery监听第一个下拉菜单的change事件,动态更新第二个下拉菜单的内容。 5. **Ajax交互**:为了实现...
在Web开发中,级联下拉列表是一种常见的交互设计,用户选择一个选项后,另一个相关的下拉列表会根据前者的选值动态更新。这个过程通常涉及到前端与后端的交互,利用JavaScript库如jQuery和服务器端框架如Spring MVC...
演示版基本用法要使用该插件而不覆盖任何默认设置,您需要使用多个下拉(选择)菜单创建表单的结构。 在以下示例中,我正在使用<form> <select name="category" class="cascadingDropDown" data-group=...
菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联