`
weibaojun
  • 浏览: 98865 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

operamasks 中动态创建多个树,并给多个树添加同一个事件处理方法

 
阅读更多

在系统中导航用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-ui-2.1-demo

    在探索这个Demo时,开发者可以学习到如何利用OperaMasks API进行扩展开发,包括如何添加和管理扩展的菜单项、工具栏按钮,以及如何处理用户事件。此外,UI设计者可以从示例中获取灵感,了解如何创建美观且用户友好的...

    OperaMasks查询、模糊查询、源码

    总结起来,"OperaMasks查询、模糊查询、源码"这个Demo是一个综合性的教学实例,涵盖了前端开发、后端处理、数据库操作以及用户交互等多个方面,对于想要提升Web开发技能的开发者来说,这是一个极好的实践平台。...

    operamasks官方jsf教程

    **OperaMasks** 是一个专为Opera浏览器设计的JSF组件库,它扩展了JSF的功能,使得在Opera中使用JSF应用更加顺畅。 **教程概述:** "operamasks官方jsf教程"是针对初学者的一个资源,旨在介绍如何使用JSF和...

    operamasks_ui

    在"om-ui"这一标签下,我们可以理解到这是OperaMasks UI的核心模块,它可能包含了一系列基础的UI元素和功能,如按钮、输入框、布局容器等,同时也可能集成了特定的标签管理系统,用于处理和展示多个网页或页面视图。...

    operamasks-ui-2.0-doc

    "Operamasks UI 2.0 Doc"是一个针对 Operamasks 用户界面的开发文档,它提供了详尽的指导和信息,帮助开发者理解和构建基于Operamasks的Web应用程序。这个离线版文档对于开发者来说尤其珍贵,因为在线寻找这类资源...

    operamasks安装包

    通过这个文件,OperaMasks能够提供自定义的用户界面,比如添加书签、管理密码等,同时可能还包含了一些与浏览器交互的接口。 2. **operamasks-core.jar**:这是OperaMasks的核心功能模块。这个文件包含了扩展的主要...

    operamasks2.1整合spring、hebernate实现grid增删改查

    标题“operamasks2.1整合spring、hebernate实现grid增删改查”涉及到的是一个Web开发项目,其中使用了OperaMasks 2.1、Spring和Hibernate三大技术框架来构建一个具备数据操作功能(CRUD:创建、读取、更新、删除)的...

    operaMasks_studio应用手册

    1. **集成开发环境(IDE)支持**:operaMasks_studio作为一款专门针对JSF的开发工具,它能够很好地与主流的IDE(如Eclipse、IntelliJ IDEA等)集成,为用户提供一个完整的开发环境。 2. **代码自动生成**:为了...

    operamasks-faces_1.0

    5. **扩展或插件安装文件**:如果是Opera浏览器的扩展,那么压缩包中可能包含一个或多个CRX文件,这是Chrome(包括Opera)浏览器的扩展安装包格式。 6. **许可证和Readme文件**:通常,开源项目或软件会提供许可证...

    operamasks-ui-2.0-demo--.zip

    "Operamasks UI 2.0 Demo" 是一个专门针对Opera浏览器的扩展或应用界面设计的开发套件,主要用于创建和定制用户界面。这个压缩包文件 "operamasks-ui-2.0-demo--.zip" 包含了用于演示和实践如何使用Opera Masks UI ...

    operamasks整合spring、hibernate实现grid增删改查

    在IT行业中,Web开发是一项核心任务,而"operamasks整合spring、hibernate实现grid增删改查"是常见的Web应用开发实践。这个主题涵盖了多个关键的技术组件,包括OperaMasks、Spring框架和Hibernate持久化层,以及Grid...

    扩展OperamasksUI的grid的排序和显示detail属性

    4. 对于detail属性,可能需要创建一个新的模板或组件来展示详细信息,并在grid单元格上添加交互元素(如图标或按钮)来触发细节显示。 5. 测试新功能,确保其在各种数据和用户交互情况下都能正确工作,并且不会影响...

    operamasks-sdk_3.2

    Operamasks SDK 3.2 是金蝶中间件公司推出的一款重要的软件开发工具包,专为开发者设计,旨在简化与金蝶产品集成的过程,提高开发效率,并增强应用程序的功能。这个版本的SDK着重于提升性能、稳定性和用户体验,...

    operamasks-ui

    "Operamasks-UI" 是一个专为Opera浏览器设计的用户界面增强插件的源代码包,其版本为1.2,存储在一个名为"operamasks-ui-1.2.zip"的压缩文件中。这个插件的目标是提供更加个性化、高效且易用的浏览体验。在了解这个...

    operamasks-ui 帮助文档

    只是我在网上找的 operamasks-ui api 文档 , 希望对你们有帮助

    operamasks开发的程序连接mysql数据库

    遍历`ResultSet`,将数据封装到`Fee`对象中,并添加到列表中返回。 8. **数据显示**: 最后提到的"face页面"和"GriedBean"可能是前端展示数据的部分,"face"可能是页面模板,而"GriedBean"可能是一个JavaBean,...

    operamasks-ui-2.0.zip

    "Operamasks UI 2.0" 是一个与JavaScript相关的用户界面库的压缩包,它包含了一系列用于构建交互式Web应用程序的组件和工具。这个版本2.0的更新可能引入了新的特性和性能优化,旨在提升用户体验和开发者的便利性。 ...

    operamasks-ui-2.0-demo.zip

    这个项目可能是一个Web应用程序框架或库,专为开发人员设计,以便在Opera浏览器或其他支持JavaScript的环境中创建交互式和富媒体的用户界面。以下是基于这个压缩包内容可能涉及到的关键知识点: 1. **Opera Masks**...

Global site tag (gtag.js) - Google Analytics