在系统中导航用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);
}
分享到:
相关推荐
在探索这个Demo时,开发者可以学习到如何利用OperaMasks API进行扩展开发,包括如何添加和管理扩展的菜单项、工具栏按钮,以及如何处理用户事件。此外,UI设计者可以从示例中获取灵感,了解如何创建美观且用户友好的...
总结起来,"OperaMasks查询、模糊查询、源码"这个Demo是一个综合性的教学实例,涵盖了前端开发、后端处理、数据库操作以及用户交互等多个方面,对于想要提升Web开发技能的开发者来说,这是一个极好的实践平台。...
**OperaMasks** 是一个专为Opera浏览器设计的JSF组件库,它扩展了JSF的功能,使得在Opera中使用JSF应用更加顺畅。 **教程概述:** "operamasks官方jsf教程"是针对初学者的一个资源,旨在介绍如何使用JSF和...
在"om-ui"这一标签下,我们可以理解到这是OperaMasks UI的核心模块,它可能包含了一系列基础的UI元素和功能,如按钮、输入框、布局容器等,同时也可能集成了特定的标签管理系统,用于处理和展示多个网页或页面视图。...
"Operamasks UI 2.0 Doc"是一个针对 Operamasks 用户界面的开发文档,它提供了详尽的指导和信息,帮助开发者理解和构建基于Operamasks的Web应用程序。这个离线版文档对于开发者来说尤其珍贵,因为在线寻找这类资源...
通过这个文件,OperaMasks能够提供自定义的用户界面,比如添加书签、管理密码等,同时可能还包含了一些与浏览器交互的接口。 2. **operamasks-core.jar**:这是OperaMasks的核心功能模块。这个文件包含了扩展的主要...
标题“operamasks2.1整合spring、hebernate实现grid增删改查”涉及到的是一个Web开发项目,其中使用了OperaMasks 2.1、Spring和Hibernate三大技术框架来构建一个具备数据操作功能(CRUD:创建、读取、更新、删除)的...
1. **集成开发环境(IDE)支持**:operaMasks_studio作为一款专门针对JSF的开发工具,它能够很好地与主流的IDE(如Eclipse、IntelliJ IDEA等)集成,为用户提供一个完整的开发环境。 2. **代码自动生成**:为了...
5. **扩展或插件安装文件**:如果是Opera浏览器的扩展,那么压缩包中可能包含一个或多个CRX文件,这是Chrome(包括Opera)浏览器的扩展安装包格式。 6. **许可证和Readme文件**:通常,开源项目或软件会提供许可证...
"Operamasks UI 2.0 Demo" 是一个专门针对Opera浏览器的扩展或应用界面设计的开发套件,主要用于创建和定制用户界面。这个压缩包文件 "operamasks-ui-2.0-demo--.zip" 包含了用于演示和实践如何使用Opera Masks UI ...
在IT行业中,Web开发是一项核心任务,而"operamasks整合spring、hibernate实现grid增删改查"是常见的Web应用开发实践。这个主题涵盖了多个关键的技术组件,包括OperaMasks、Spring框架和Hibernate持久化层,以及Grid...
4. 对于detail属性,可能需要创建一个新的模板或组件来展示详细信息,并在grid单元格上添加交互元素(如图标或按钮)来触发细节显示。 5. 测试新功能,确保其在各种数据和用户交互情况下都能正确工作,并且不会影响...
Operamasks SDK 3.2 是金蝶中间件公司推出的一款重要的软件开发工具包,专为开发者设计,旨在简化与金蝶产品集成的过程,提高开发效率,并增强应用程序的功能。这个版本的SDK着重于提升性能、稳定性和用户体验,...
"Operamasks-UI" 是一个专为Opera浏览器设计的用户界面增强插件的源代码包,其版本为1.2,存储在一个名为"operamasks-ui-1.2.zip"的压缩文件中。这个插件的目标是提供更加个性化、高效且易用的浏览体验。在了解这个...
只是我在网上找的 operamasks-ui api 文档 , 希望对你们有帮助
遍历`ResultSet`,将数据封装到`Fee`对象中,并添加到列表中返回。 8. **数据显示**: 最后提到的"face页面"和"GriedBean"可能是前端展示数据的部分,"face"可能是页面模板,而"GriedBean"可能是一个JavaBean,...
"Operamasks UI 2.0" 是一个与JavaScript相关的用户界面库的压缩包,它包含了一系列用于构建交互式Web应用程序的组件和工具。这个版本2.0的更新可能引入了新的特性和性能优化,旨在提升用户体验和开发者的便利性。 ...
这个项目可能是一个Web应用程序框架或库,专为开发人员设计,以便在Opera浏览器或其他支持JavaScript的环境中创建交互式和富媒体的用户界面。以下是基于这个压缩包内容可能涉及到的关键知识点: 1. **Opera Masks**...