您的位置:首页 > Web前端 > JavaScript

JSTL自定义标签的使用

2011-10-16 22:54 267 查看
由于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;
}

}


当然,这个处理类用spring注入sysBizFactory,这个配置估计很熟悉,不需要记录

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);" onclick="openWin('person/personAction!addInput?orgId=<s:property value="orgId"/>','addPerson',600,200);">添加人员信息</a>
</c:if>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: