现在的位置: 首页 > 综合 > 正文

JSTL自定义标签的使用

2017年04月16日 ⁄ 综合 ⁄ 共 2399字 ⁄ 字号 评论关闭

由于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>

抱歉!评论已关闭.