功能说明:
1、以动态目录树的方式进行选择
2、选择的内容在接口实现类中实现
3、具体步骤
A、编写接口实现类
B、在资源管理的参数配置的一般参数中配置参数和接口实现类名
C、使用系统提供的界面程序进行调用
一、 编写接口实现类,需继承A_CommonSelector类
/**
* 返回下级节点的菜单
* @return
*/
public ArrayList getSubNodeElement(String parameter);
/**
* 返回列叶节点的元素
* @param parameter
* @return
*/
public ArrayList getPageElement(String parameter);
/**
* 根据参数返回已经选择的对象
* @param parameter
* @return
*/
public ArrayList getSelectedElements(String parameter);
/**
* 是否支持多选
* @return
*/
public boolean isMultiSelect();
/**
* 返回根名称
* @return
*/
public String getRootName();
/**
* 返回css样式文件,
* @return
*/
public String getHtmlCss();
/**
* 设置语言相关
* @param language
*/
public void setLanguage(String language);
具体要求
1、选中的值的内容有NodeElement 的setValue决定,不要包含,号
2、NodeElement 的setCanSelect方法设置元素是否可以选中
(具体见附:接口实现类)
二、 定义参数
进入资源管理,在其他参数(只能是其他参数)中定义以下类似的参数,
参数名称:org
参数值是接口实现类:net.sysplat.access.external.OrganizeSelector
“刷新”后是配置参数生效
三、调用模式
使用模态窗口调用,示例(组织部门的调用):
http://localhost:8080/sysplat/access/selector.jsp?p=org,其中org对应一般参数的参数名称
如果使用了需要使用根节点的参数,则url中增加ID参数,
http://localhost:8080/sysplat/access/selector.jsp?p=org&id=XXXX,
(目前net.sysplat.access.external.OrganizeSelector实现了组织用户的选择),
如果还需要传递一个固定的参数,
http://localhost:8080/sysplat/access/selector.jsp?p=org&id=XXXX&t=y,
1、调用js代码:
var s = window.showModalDialog("/sysplat/access/selector.jsp?p=org",null, "dialogWidth:570px;dialogHeight:546px;help: no;scroll:no; status:no");
s是返回的选择值
2、提示:可以使用双击进行添加和删除
四、系统自带的选择
1、用户选择
单用户选择:/sysplat/access/selector.jsp?p=user
多用户选择:/sysplat/access/selector.jsp?p=muser
(结果以回车换行符进行分割)
2、用户组选择
/sysplat/selector/groupselector.jsp
附:接口实现类
package net.sysplat.access.external;
import java.sql.Connection;
import java.util.ArrayList;
import net.sysplat.admin.eo.Organize;
import net.sysplat.admin.eo.User;
import net.sysplat.admin.manager.OrganizeManager;
import net.sysplat.admin.manager.UserManager;
import net.sysplat.common.I_CommomSelector;
import net.sysplat.common.NodeElement;
import net.sysplat.common.PlatConnectionManager;
/**
* 组织用户选择器
* @author
*
*/
public class OrganizeSelector extends A_CommonSelector
{
/**
* 根据parameter返回下级部门
*/
public ArrayList getSubNodeElement(String parameter)
{
ArrayList list = null;
Connection conn = null;
OrganizeManager orgMg = OrganizeManager.getInstance();
if(parameter == null) parameter = "0001O";
try
{
conn = PlatConnectionManager.getInstance().getConnection();
orgMg.setLanguage(this.language);
orgMg.setConnection(conn);
//该处也可以直接访问数据库
ArrayList list1 = orgMg.getNextLevelOrganize(parameter, null);
if(list1 != null)
{
list = new ArrayList();
for(int i=0; i<list1.size(); i++)
{
NodeElement node = new NodeElement();
Organize o = (Organize)list1.get(i);
node.setId(o.getHierarchy()); //用于提取数据的参数,对应parameter
node.setParentId(o.getParentId() + "");//父Id
node.setName(o.getName());
node.setDisplayOrder(o.getDisplayOrder());
node.setHierarchy(o.getHierarchy());
node.setValue(o.getId() + "/" + o.getName()); //设置需要的数据,避免使用,分割
//可以设置元素是否能被选中
//node.setCanSelect(false);
list.add(node);
}
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
PlatConnectionManager.close(conn);
}
return list;
}
/**
* 根据parameter返回用户,如果没有叶节点,则该方法直接返回null
*/
public ArrayList getPageElement(String parameter)
{
ArrayList list = null;
Connection conn = null;
UserManager userMg = UserManager.getInstance();
//设置语言相关
userMg.setLanguage(this.language);
if(parameter == null) parameter = "0001O"; //设置根数据的范围条件
try
{
conn = PlatConnectionManager.getInstance().getConnection();
userMg.setConnection(conn);
//该处也可以直接访问数据库
ArrayList list1 = userMg.getCurrentLevelUser(parameter, null);;
if(list1 != null)
{
list = new ArrayList();
for(int i=0; i<list1.size(); i++)
{
NodeElement node = new NodeElement();
User o = (User)list1.get(i);
node.setId(o.getHierarchy()); //用于提取数据的参数
node.setParentId("@");//@表示是叶节点
node.setName(o.getName());
//排序码
node.setDisplayOrder(o.getDisplayOrder());
node.setHierarchy(o.getHierarchy());
node.setValue(o.getLoginid() + "/" + o.getName()); //设置需要的数据,避免使用,分割
//节点关闭的图标
node.setIcon("../images/user.gif");
//节点打开的图标
node.setOpenIcon("../images/user.gif");
list.add(node);
}
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
PlatConnectionManager.close(conn);
}
return list;
}
/**
* 是否允许多选
*/
public boolean isMultiSelect()
{
return false;
}
/**
* 根节点的名称
*/
public String getRootName()
{
return "部门列表";
}
public String getHtmlCss()
{
return null;
}
/**
* 根据参数返回已经选择的对象,测试的例子
*/
public ArrayList getSelectedElements(String parameter)
{
// NodeElement node = new NodeElement();
// //只需以下几个值
// node.setName("XXX");
// node.setValue("wangyichun/XXX"); //设置需要的数据,避免使用,分割
// node.setIcon("../images/user.gif"); //显示的图标
//
// ArrayList list = new ArrayList();
// list.add(node);
// return list;
return null;
}
private String language = PlatConnectionManager.getInstance().getLanguage();
public void setLanguage(String language)
{
if(language != null && !this.language.equalsIgnoreCase(language))
{
this.language = language;
}
}
}