本文主要讲解J-hi中树的过滤。以员工部门树为例。
要求在点击某个员工时,能够查看到该员工所在的部门。
图1-部门树
下图2是所有员工列表:
图-2
当点击王五时,显示王五所在的部门结构树如图3。
图-3
主要代码部分:
1、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-doc的API。
而例子的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,欢迎大家与他在技术上多多交流