j-hi平台树形之二(节点过滤实现)

j-hi平台树形之二(节点过滤实现)

本文主要讲解J-hi中树的过滤。以员工部门树为例。

要求在点击某个员工时,能够查看到该员工所在的部门。

 

 

           1-部门树

下图2是所有员工列表:

-2

当点击王五时,显示王五所在的部门结构树如图3

      -3

主要代码部分:

Jsp超链接代码:

<a

href="tree.action?menuName=orgList&orgId=${item.org.id}" target="dialog">${item.org.orgName}</a>

注意:orgId是动态传入的参数,这里指该员工所在的部门编号。

2、在himenu-config.xml中配置部门树的后面加上这么一段

<void property="filter">

   <string>org.cis.filter.orgCollectionProcessor</string>

 </void>

注意:string标签内的是写过滤数据的类。对树的数据进行过滤,提供两种接口方式对数据进行过滤 MenuFilterProcessor 在获取数据之前填加过滤器;MenuCollectionProcessor 在获取数据之后再对数据做整理.具体方法查看java-docAPI

而例子的orgCollectionProcessor类代码:

public class orgCollectionProcessor implements MenuCollectionProcessor {

 

    public Collection getCollection(Collection coll, Map<String, String> map) {

       // TODO Auto-generated method stub

       //coll - 当前节点下一级节点的数据集合

        //map 动态的传入数据,map的形式

       //传入一个员工的所在的部门Id,返回该员工所在的部门结构树

       int orgId=Integer.parseInt(map.get("orgId").toString());

       for (Iterator iterator = coll.iterator(); iterator.hasNext();) {

           Object obj = (Object) iterator.next();       

           if(obj instanceof HiOrg){

              HiOrg hiorg = (HiOrg)obj;             

              if(hiorg.getId()!=orgId) {

                  iterator.remove();

                  coll.remove(obj);

              }

           }

       }

       return coll;

    }  

}


                                     注:该文档由J-Hi爱好者"无可"提供,他的QQ号为924372739,欢迎大家与他在技术上多多交流


你可能感兴趣的:(j-hi平台树形之二(节点过滤实现))