由于dwr的js和jquery冲突,导致不得不换解决方案,记得以前写过一个OA项目,里面有一个jstl的权限标签,今天根据管理员ID那管理员名字的时候可以使用这个技术,于是记个简单的步骤,以免以后再次使用:
1.先写一个标签的处理类:
package net.txon.kxt.exam.sys.util;
import net.txon.kxt.exam.sys.factory.SysBizFactory;
/**
* @author 紫竹
* 获得管理员名字
*/
public class ManagerUtils {
//这个地方貌似必须要用静态的
private static SysBizFactory sysBizFactory = null;
//这个地方一定不能用静态的,否则会注入不进去
public void setSysBizFactory(SysBizFactory sysBizFactory) {
this.sysBizFactory = sysBizFactory;
}
public static String getNameById(Long id){
String name = sysBizFactory.getManagerBiz().getNameById(id);
return name;
}
}
2.然后给处理类定义一个tld文件,这个文件放入到WEB-INF下
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>my</short-name>
<uri>http://www.zizhu.com/kxt/functions</uri>
<function>
<name>getManagerNameById</name>
<function-class>net.txon.kxt.exam.sys.util.ManagerUtils</function-class>
<function-signature>java.lang.String getNameById(java.lang.Long)</function-signature>
</function>
</taglib>
3.使用:首先引入标签:
<%@ taglib uri="http://www.zizhu.com/kxt/functions" prefix="my"%>
4.在web.xml中注册:
<!-- 自定义函数库 -->
<jsp-config>
<taglib>
<taglib-uri>http://www.zizhu.com/oa/functions</taglib-uri>
<taglib-location>/WEB-INF/my.tld</taglib-location>
</taglib>
</jsp-config>
可以使用了:
${my:getManagerNameById(adminId)}
这个地方是一个很简单的应用,实际上用得比较舒服的地方是权限的控制,控制某个人是否有权限之类的,由于某个页面当中用户拥有的权限比较复杂,不可能在服务器端查出所有权限,只能在页面上根据具体情况具体查出用户是否拥有这个权限
下面贴一个权限的标签文件,做个备份:
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>my</short-name>
<uri>http://www.zizhu.com/oa/functions</uri>
<function>
<name>hasPermission</name>
<function-class>com.oa.web.SecurityFunction</function-class>
<function-signature>boolean hasPermission(int, java.lang.String ,int)</function-signature>
</function>
</taglib>
这个用法已经很全面了,估计到时候根据这个改也会了
页面的使用方法:
<c:if test="${my:hasPermission(login.id,'person',0)}">
<a href="javascript:void(0);" οnclick="openWin('person/personAction!addInput?orgId=<s:property value="orgId"/>','addPerson',600,200);">添加人员信息</a>
</c:if>