在系统中导航用layout:accordionLayout 布局,每个layout:panel根据用户权限动态生成,layout:panel下动态添加w:tree组件,那么可以用如下方法,对每个layout:panel底下的w:tree动态添绑定同一个事件监听处理方法,代码如下:
/**
* 在页面展示前,根据用户的功能权限,动态生成功能模块的树结构
*
* @param isPostback
*/
@BeforeRender
public void beforeRender(boolean isPostback) {
//
if (isPostback) {
return;
}
FacesContext context = FacesContext.getCurrentInstance();
Application app = context.getApplication();
// 1、根据用户的功能模块权限,查找属于用户的功能模块信息
HttpSession session = (HttpSession) context.getExternalContext()
.getSession(true);
// 用户登录信息
LoginInfo loginInfo = (LoginInfo) session
.getAttribute(Global.LOGIN_INFO);
// 2、循环功能模块信息列表,动态构建功能模块及操作模块
List<XtGnmk> gnmkList = mainService.getGnmkList(loginInfo);
// 循环功能模块列表,动态生成树结构
int i = 0;
for (XtGnmk gnmk : gnmkList) {
// 只对第一级的节点处理
if (gnmk.getMkBh().length() == 2) {
// 新建功能模块的抽屉标签
UIPanel panel = (UIPanel) app
.createComponent(UIPanel.COMPONENT_TYPE);
panel.setTitle(gnmk.getMkMc());
panel.setBorder(false);
panel.setCollapsed(true);
// 给功能模块抽屉下添加功能模块树
UITree tree = (UITree) app
.createComponent(UITree.COMPONENT_TYPE);
tree.setValue(new XtGnmkTreeDataProvider(gnmk));
tree.setId("tree" + i);
tree.setRootVisible(false);
tree.setExpandAll(true);
// 为树结构添加点击事件的监听
tree.getAjaxEventHandler().addElBinding("onclick",
"#{mainBean.tree_onclick}", false);
// 将生成的Tree添加到对应的抽屉下
panel.getChildren().add(tree);
// 将抽屉添加到功能导航LayoutPanel中
layout.getChildren().add(panel);
i++;
}
}
}
/**
* 为树添加事件的监听,执行页面的专项操作
*
* @param event
*/
public void tree_onclick(TreeNodeEvent event) {
// 根据事件对象,得到事件的Node
UITreeNode node = event.getEventNode();
// 得到节点中的功能模块对像
XtGnmk gnmk = (XtGnmk) node.getUserData();
// 得到功能模块连接的url
String url = gnmk.getUrl();
// 激活contentLayout中的第二个Tab,即工作区的Panel
content.setActiveTab(1);
// 设置工作区的Frame的URL,执行页面的转向
workPanelFrame.load(url);
}
分享到:
相关推荐
总结起来,"OperaMasks查询、模糊查询、源码"这个Demo是一个综合性的教学实例,涵盖了前端开发、后端处理、数据库操作以及用户交互等多个方面,对于想要提升Web开发技能的开发者来说,这是一个极好的实践平台。...
在"om-ui"这一标签下,我们可以理解到这是OperaMasks UI的核心模块,它可能包含了一系列基础的UI元素和功能,如按钮、输入框、布局容器等,同时也可能集成了特定的标签管理系统,用于处理和展示多个网页或页面视图。...
标题“operamasks2.1整合spring、hebernate实现grid增删改查”涉及到的是一个Web开发项目,其中使用了OperaMasks 2.1、Spring和Hibernate三大技术框架来构建一个具备数据操作功能(CRUD:创建、读取、更新、删除)的...
以上就是关于“operamasks整合spring、jpa(hibernate)测试grid”的核心知识点,这个整合涉及到了前后端的交互、数据库操作以及数据展示等多个层面,是Web开发中常见的技术组合。在实际应用中,还需要考虑性能优化...
除了理论知识之外,《OperaMasks构件参考》还提供了多个实战案例,帮助读者更好地理解如何运用这些组件和技术来构建实际应用。例如: 1. **登录界面设计**:利用表单组件、按钮等元素实现一个完整的用户登录流程。 ...
- **概述**:MyException 是一个关于 Java、.NET 和 Oracle 异常处理的资源站点。 - **特点**:提供各种异常问题的解决方案和案例分析。 ### 9. IBM DeveloperWorks (http://www.ibm.com/developerworks/cn/java/) ...