zui动态生成树的代码,zul对extjs的集成
根据提供的文件信息,我们可以深入探讨两个主要的知识点:ZUI 动态生成树的代码以及 ZUL 对 ExtJS 的集成。 ### ZUI 动态生成树的代码 #### 概述 ZK 是一个用于构建企业级 Web 应用的强大框架,而 ZUI 是其前端组件库的一部分。在 ZK 中,可以通过 ZUI 创建复杂的用户界面,包括树形结构。在给定的代码示例中,展示了一个使用 ZUI 动态生成树的实例。 #### 代码解析 这段代码通过 ZK 的脚本语言(zscript)实现了动态创建树形结构的功能。首先定义了一个 `create` 方法,该方法用于构建树结构,并将数据填充到树中。 ```java void create() { List set = (List) session.getAttribute("tree"); List list = new ArrayList(); if (set != null) { Collections.sort(set, new CommonUtils()); Iterator ite = set.iterator(); while (ite.hasNext()) { SysRight right = (SysRight) ite.next(); TreeCell cell = new TreeCell(right.getRightText()); TreeRow row = new TreeRow(); TreeItem item = new TreeItem(); item.setId(right.getRightCode()); cell.setParent(row); row.setParent(item); // 根据父节点情况添加子节点 if (right.getRightParent() == null) { if (power.getTreechildren() == null) { TreeChildren child = new TreeChildren(); item.setParent(child); child.setParent(power); } else { item.setParent(power.getTreechildren()); } list.add(item); } else { for (int i = 0; i < list.size(); i++) { TreeItem currentiTreeitem = (TreeItem) list.get(i); if (right.getRightParent().getRightCode().equals(currentiTreeitem.getId())) { if (currentiTreeitem.getTreechildren() == null) { TreeChildren child = new TreeChildren(); item.setParent(child); child.setParent(currentiTreeitem); } else { item.setParent(currentiTreeitem.getTreechildren()); } list.add(item); } } } } } } ``` 1. **数据源获取**:通过从 Session 中获取名为 "tree" 的列表作为树的数据源。 2. **排序**:使用自定义的 `CommonUtils` 类对数据进行排序。 3. **构建节点**:遍历列表中的每个元素,为每个元素创建 `TreeCell`、`TreeRow` 和 `TreeItem` 对象,并设置它们之间的父子关系。 4. **添加到树**:根据节点的父节点情况将其添加到树的不同位置。 #### 定义树 在 zscript 外部,通过 XML 样式定义了树的外观和行为: ```xml <tree id="power" onCreate="create()" style="align:center" height="500"> <treecols> <treecol label="权限信息"/> </treecols> </tree> ``` 这里定义了一个 ID 为 `power` 的树,设置了树的高度,并指定了创建时执行的方法 `create()`。同时,定义了树的一列,列头显示为“权限信息”。 ### ZUL 对 ExtJS 的集成 #### 概念 尽管题目提到的是 ZUL 对 ExtJS 的集成,但实际上 ZK 与 ExtJS 属于不同的技术栈。ZK 使用 ZUL 作为其 UI 定义语言,而 ExtJS 是一个基于 JavaScript 的框架,主要用于构建复杂的 Web 应用程序。二者通常不会直接集成在一起使用。 #### 实现方式 如果确实需要将两者结合起来使用,可能的方式是通过在 ZK 中嵌入 ExtJS 组件。例如,在 ZK 页面中使用 `<iframe>` 或者 `<window>` 控件加载包含 ExtJS 组件的 HTML 页面。 #### 示例 假设有一个使用 ExtJS 创建的面板,可以通过以下方式在 ZK 中嵌入: ```xml <window title="ExtJS Panel" hflex="min" vflex="min"> <iframe src="/path/to/extjs-panel.html"/> </window> ``` 这样,可以实现 ZK 与 ExtJS 的简单集成,但需要注意兼容性和性能问题。 ### 总结 本文主要介绍了如何使用 ZK 和 ZUI 动态生成树形结构的代码,并简要探讨了 ZUL 与 ExtJS 集成的可能性。通过这些知识点的学习,可以帮助开发者更好地理解和应用 ZK 及其相关技术。
<zk>
<zscript><![CDATA[
//@DECLARATION
void create(){
java.util.List set=(java.util.List)session.getAttribute("tree");
java.util.List list=new java.util.ArrayList();
if(set!=null)
{
java.util.Collections.sort(set,new com.yyaccp.lm.power.web.util.CommonUtils() );
java.util.Iterator ite=set.iterator();
while(ite.hasNext())
{
com.yyaccp.lm.power.entity.SysRight right=(com.yyaccp.lm.power.entity.SysRight)ite.next();
org.zkoss.zul.Treecell cell=new org.zkoss.zul.Treecell(right.getRightText());
org.zkoss.zul.Treerow row=new org.zkoss.zul.Treerow();
org.zkoss.zul.Treeitem item=new org.zkoss.zul.Treeitem();
item.setId(right.getRightCode());
cell.setParent(row);
row.setParent(item);
if(right.getRightParent()==null)
{
if(power.getTreechildren()==null)
{
org.zkoss.zul.Treechildren child=new org.zkoss.zul.Treechildren();
item.setParent(child);
child.setParent(power);
}
else
- 粉丝: 1302
- 资源: 34
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (180014016)pycairo-1.18.2-cp35-cp35m-win32.whl.rar
- (180014046)pycairo-1.21.0-cp311-cp311-win32.whl.rar
- DS-7808-HS-HF / DS-7808-HW-E1
- (180014004)pycairo-1.20.0-cp36-cp36m-win32.whl.rar
- (178330212)基于Springboot+VUE的校园图书管理系统
- (402216)人脸识别
- enspOSPF多区域路由配置
- (175822648)java项目之电信计费系统完整代码.zip
- (175416816)毕业设计基于SpringBoot+Vue的学生综合素质评价系统源码+数据库+项目文档
- (174808034)webgis课程设计文件