现在的位置: 首页 > 综合 > 正文

对象树到easyui树实现方式

2013年01月23日 ⁄ 综合 ⁄ 共 2692字 ⁄ 字号 评论关闭

VO中配置list:

    1: public class SysFunctionVO implements Serializable {
            /**孩子节点**/
        private List<SysFunctionVO> sysFunctionVOList ;
        .....

    2 :public class EasyUITreeNode implements Serializable {

        /**序列号**/
        private static final long serialVersionUID = 8984229233079127698L;
        /**节点ID**/
        private String id;
        /**树节点名称**/
        private String text;
        /**前面的小图标样式**/
        private String iconCls;
        /**是否勾选状态**/
        private Boolean checked;
        /**其他参数**/
        private Map<String, Object> attributes;
        /**该节点是否展开**/
        private String state = "open";
        /**子节点**/
        private List<EasyUITreeNode> children ;//add by

一对多查询mybatis配置:

    <!--new add 根据父级获取子集返回对象 -->
    <resultMap id="cascadeLoadSysFunction" type="sysFunctionVO">
        <id property="sfId" column="sf_id" />
        <result property="sfParentId" column="sf_parent_id" />
        <result property="sfName" column="sf_name" />
        <result property="sfOrder" column="sf_order" />
        <result property="sfStatus" column="sf_status" />
        <collection property="sysFunctionVOList" column="sf_id" ofType="sysFunctionVO" javaType="java.util.ArrayList"
        select="findSysFunctionTree"></collection>

    </resultMap>

    <!--new add 根据父级id查询子级数据 -->
    <select id="findSysFunctionTree" resultMap="sysFunction.cascadeLoadSysFunction"  parameterType="string">
        select * from sys_function where sf_parent_id = #{sfId}  order by sf_order
    </select>

使用方法:
    public List<SysFunctionVO> findSysFunctionTree(String sfId) {
      return this.getSqlSession().selectList("sysFunction.findSysFunctionTree",sfId);

业务调用:可以传入任意的节点,这样就可以拿到从此节点向下的孩子节点,拿到对象树
    List<EasyUITreeNode> tree = new ArrayList<EasyUITreeNode>();
    EasyUITreeNode node = new EasyUITreeNode();//easyui树对应的根节点
    sysFunctionService.findSysFunctionTree("1");//返回对象树
    node.setId(vo.getSfId());
    node.setText(vo.getSfName());
    tree.add(node);//将easyui树根添加到list

将转换后的tree以json写回页面;

对象树到前台节点显示(传入根节点,页面定义的node,传入定义的tree):
    public List<EasyUITreeNode> getSysFunctionEasyUITree(SysFunctionVO vo,EasyUITreeNode node,List<EasyUITreeNode> tree){
        List<EasyUITreeNode> children = new ArrayList<EasyUITreeNode>();
        for(SysFunctionVO childVO :vo.getSysFunctionVOList()){
            EasyUITreeNode childNode = new EasyUITreeNode();
            childNode.setId(childVO.getSfId());
            childNode.setText(childVO.getSfName());
            if(lt.contains(Integer.parseInt(childVO.getSfId()))){//注意格式的转化
                childNode.setChecked(true);//初始化节点的选择状态
            }
            children.add(childNode);//孩子节点集合
            
            if(!childVO.getSysFunctionVOList().isEmpty()){
                getSysFunctionEasyUITree(lt,childVO,childNode,tree);//递归调用
            }
        }
        if(children.size()>0)
        {
            node.setChildren(children);//当前节点添加孩子节点
        }
        return tree;//返回树
    }

【上篇】
【下篇】

抱歉!评论已关闭.