首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

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

2012-07-16 
operamasks 中动态创建多个树,并给多个树添加同一个事件处理方法在系统中导航用layout:accordionLayout 布

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

在系统中导航用layout:accordionLayout 布局,每个layout:panel根据用户权限动态生成,layout:panel下动态添加w:tree组件,那么可以用如下方法,对每个layout:panel底下的w:tree动态添绑定同一个事件监听处理方法,代码如下:

/** * 在页面展示前,根据用户的功能权限,动态生成功能模块的树结构 *  * @param isPostback */@BeforeRenderpublic 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) {// 根据事件对象,得到事件的NodeUITreeNode node = event.getEventNode();//  得到节点中的功能模块对像XtGnmk gnmk = (XtGnmk) node.getUserData();// 得到功能模块连接的urlString url = gnmk.getUrl();// 激活contentLayout中的第二个Tab,即工作区的Panelcontent.setActiveTab(1);// 设置工作区的Frame的URL,执行页面的转向workPanelFrame.load(url);}

?

热点排行