`

easyUi ---tree 后台动态生成json字符串形成菜单树

阅读更多
public class TreeNode implements java.io.Serializable {
    private Integer id;
    private String text;// 树节点名称
    private String iconCls;// 前面的小图标样式
    private Boolean checked = false;// 是否勾选状态
    private Map<String, Object> attributes;// 其他参数
    private List<TreeNode> children;// 子节点
    private String state = "open";// 是否展开(open,closed)

    /**
     * @return the id
     */
    public Integer getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(Integer id) {
        this.id = id;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public Boolean getChecked() {
        return checked;
    }

    public void setChecked(Boolean checked) {
        this.checked = checked;
    }

    public Map<String, Object> getAttributes() {
        return attributes;
    }

    public void setAttributes(Map<String, Object> attributes) {
        this.attributes = attributes;
    }

    public List<TreeNode> getChildren() {
        return children;
    }

    public void setChildren(List<TreeNode> children) {
        this.children = children;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public String getIconCls() {
        return iconCls;
    }

    public void setIconCls(String iconCls) {
        this.iconCls = iconCls;
    }

}
   
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
	<class name="com.acca.entity.Menu" table="t_menu"> 
		<id name="id">
			<generator class="native"/>
		</id>
		<property name="name"/>
		<property name="ciconcls"/>
		<property name="url"/>
		
		<set name="menus" cascade="all" inverse="true">
		 <key>
		  <column name="pid"></column>
		 </key>
		 <one-to-many class="com.acca.entity.Menu"/>
		</set>
		<many-to-one name="menu" class="com.acca.entity.Menu" column="pid"></many-to-one>
	</class>
</hibernate-mapping>
 
   
private List jsonList = new ArrayList();//action中的属性

 /**
     * 形成菜单树
     * 
     * @return
     * @throws IOException
     */
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public String makeMenuTree() throws IOException {
        jsonList=menuService.tree(menu, true);
        return SUCCESS;
    }
 
   <action name="makeMenuTree" class="menuAction"  method="makeMenuTree">
   		<result type="json">
   		<param name="root">jsonList</param>
		</result>
   </action>
 
public List<TreeNode> tree(Menu menu, Boolean b) {
        List<Object> param = new ArrayList<Object>();
        String hql = "from Menu m where m.menu is null";
        if (menu != null && menu.getId() != null) {
            hql = "from Menu m where m.menu.id = ?";
            param.add(menu.getId());
        }
        List<Menu> l = menuDao.find(hql, param);
        List<TreeNode> tree = new ArrayList<TreeNode>();
        for (Menu t : l) {
            tree.add(tree1(t, b));
        }
        return tree;
    }
    
    /**
     * 菜单
     * @param t
     * @param recursive
     * @return
     */
    @SuppressWarnings("unused")
    private TreeNode tree1(Menu t, boolean recursive) {
        TreeNode node = new TreeNode();
        node.setId(t.getId());
        node.setText(t.getName());
        Map<String, Object> attributes = new HashMap<String, Object>();
        attributes.put("url", t.getUrl());
        node.setAttributes(attributes);
        if (t.getCiconcls() != null) {
            node.setIconCls(t.getCiconcls());
        } else {
            node.setIconCls("");
        }
        if (t.getMenus() != null && t.getMenus().size() > 0) {
            node.setState("closed");
            if (recursive) {// 递归查询子节点
                List<Menu> l = new ArrayList<Menu>(t.getMenus());
                //Collections.sort(l, new MenuComparator());// 排序
                List<TreeNode> children = new ArrayList<TreeNode>();
                for (Menu r : l) {
                    TreeNode tn = tree1(r, true);
                    children.add(tn);
                }
                node.setChildren(children);
            }
        }
        return node;
    }
 
<script type="text/javascript" src="js/timer.js">

$().ready(function() {
	$('#tree').tree({   
	    url:'makeMenuTree.action' ,
	    lines : true,
	    onClick : function (node) {
	             if (node.attributes) {
	              Open(node.text, node.attributes.url);
	             }
	          }
	}); 
</script>

<ul id="tree" class="easyui-tree"></ul>
  • 大小: 10 KB
  • 大小: 53.4 KB
  • 大小: 66.4 KB
分享到:
评论
1 楼 atgoingguoat 2013-05-25  
Open(node.text, node.attributes.url);

没有代码。

相关推荐

    Jquery-easyui-tree常见操作

    此函数会遍历所有选中的节点,并将它们的文本合并成一个字符串。 #### 3. 展开和折叠所有节点 在某些场景下,我们可能需要一次性展开或折叠所有的节点。这可以通过调用 `expandAll` 和 `collapseAll` 方法来实现:...

    jQuery-Easyui 多级菜单 前后台

    - 使用`Gson`库将`parentList`转换为JSON字符串,并输出到客户端。 #### 3. 递归构建多级菜单 ```java private void createTree(List&lt;Tree&gt; list, int pId) { for (int i = 0; i (); i++) { Map, Object&gt; map = ...

    jquery使用EasyUI Tree异步加载JSON数据(生成树)

    在提供的Java后端代码片段中,我们看到一个名为findBy的方法,这个方法负责查询并返回一个Category对象的列表,然后将其拼接成JSON字符串。在遍历Category对象列表的过程中,对于每一个对象,如果它没有子节点,则将...

    EasyUI实现异步加载tree(整合Struts2)源码

    // 将节点数据转换为JSON字符串 String jsonString = JSON.toJSONString(nodes); // 设置返回类型为JSON setContentType("application/json;charset=UTF-8"); renderText(jsonString); } } ``` `TreeNode`是...

    最新jquery+easyui_api培训文档

    ### 最新jQuery+EasyUI API培训文档 #### Accordion(可折叠标签) **Accordion** 是一个功能组件,允许用户在有限的空间内展示更多的内容。...&lt;ul class="easyui-tree" data-options="url:'treeData.json',...

    详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)

    通过上述后端和前端代码的配合,就可以实现一个基于Jquery EasyUI tree组件的异步加载树,这个树能够根据指定文件夹内的文件和子文件夹动态生成。 总结而言,通过Jquery EasyUI的tree组件,开发者可以方便地构建...

    Jquery easyui 实现动态树

    // 拼接JSON字符串 for (TuOafWfnodesTO node : nodes) { jsonstr += "{\"id\":\"" + node.getId() + "\", \"text\":\"" + node.getText() + "\", \"children\":["; // 递归拼接子节点(如果有的话) // ......

    jquery easyui + .net 案例

    3. JSON序列化与反序列化:.NET提供了Json.NET等库,方便将对象转换为JSON字符串,便于前端解析。 4. 安全性:.NET框架提供了身份验证、授权机制,与EasyUI配合可以实现用户登录、权限控制等功能。 四、示例项目...

    tree相关例子

    通过使用Gson,开发者可以轻松地将服务器返回的JSON字符串解析成Java对象,进一步处理和展示在EasyUI Tree上。 “gson-2.3.1.jar”是Gson库的主jar文件,包含了所有用于JSON序列化和反序列化的类和方法。在与EasyUI...

    第36章 Tree(树)组件[2]1

    这部分PHP代码中,根据传递的`id`查询数据库中的导航内容,并将结果转换为JSON字符串返回。 默认情况下,树节点是关闭状态,即它们的子节点是隐藏的。如果希望在加载成功后立即展开所有节点,可以使用`...

    jQuery EasyUI 1.4 版 API 中文版 (Made By Richie696)

    5. **数据绑定**:EasyUI 支持 JSON 数据格式,可以通过 `data-options` 属性将 JSON 字符串绑定到 HTML 元素上,或者使用 `$(...).datagrid('load', data)` 等方法动态加载数据。 6. **API 方法**:每个组件都有...

    jquery培训文档

    - **formatter**:用于格式化日期字符串的函数。 - **parser**:用于解析日期字符串的函数。 ##### 事件 - **onChange**:日期改变时触发。 - **onSelect**:日期被选中时触发。 ##### 方法 - **getValue**:...

    Asp.net配合easyui实现返回json数据实例

    与.aspx文件不同,.ashx文件不会返回HTML页面,而是能够直接返回字符串数据或其他格式的内容,因此非常适合用来返回JSON数据。 在使用.ashx文件返回JSON数据时,需要确保服务器端的请求处理程序正确地设置了...

    解析jQueryEasyUI的使用

    这些方法调用是 EasyUI 提供的扩展,它们以字符串形式指定组件的方法名,使得我们可以直接在 jQuery 对象上调用。 总的来说,jQuery EasyUI 提供了一套丰富的组件和 API,帮助开发者快速构建功能完备的前端界面。在...

    easyui中combotree循环获取父节点至根节点并输出路径实现方法

    在EasyUI框架中,Combotree是一个非常有用的组件,它结合了下拉列表和树形结构,用于展示具有层级关系的数据。本篇文章将详细介绍如何在EasyUI的Combotree中循环获取父节点直至根节点,并输出所形成的路径。 首先,...

    java实现的树

    主要是将从数据库中查询的数据封装成可以构造树的对象,然后通过递归得到json类型的字符串,然后在页面用easyui进行显示树结构。方法中还有很强的扩展性,可以按照自己的需要进行封装最后得到的数据,进行页面显示

    jquery easyui中treegrid用法的简单实例

    这里,我们根据服务器返回的`access_node`值(以逗号分隔的字符串)来决定哪些复选框应该被预先选中。 然后,我们需要定义一个处理复选框点击事件的函数,例如`set_power_status`,在这里你可以编写实际的操作逻辑...

    【尚硅谷】徐靖博 最新电商项目实战(完结)

    }2 b9 E( w8 I 59.04 商品分类检索列表 60.05 商品属性检索介绍 61.06 ajax字符串数组传参 62.07 ajax字符串json传参& i' g9 \7 ^! e7 _ 63.08 表单序列化传参 64.09 动态sql的设计方法" o# D. ?# R% _1 X 65.10 ...

Global site tag (gtag.js) - Google Analytics