欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

自定义标签 TagSupport

程序员文章站 2022-06-08 18:04:50
...

本人写的第一个web项目设计权限时,用的就是自定义标签,觉得用自定义标签来设计一个小的web程序权限,非常的简单,虽然有很久没用了,但我觉得有必要记记,万一以后用的着呢!

标签处理 priveTag.tld文件

<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" 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 web-jsptaglibrary_2_0.xsd">
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>p</short-name>
<uri>http://shude.com/prive</uri>
<tag>
    <!-- <p:valid item='${}'/> -->
    <name>valid</name>
    <!-- 标签处理类 -->
    <tag-class>com.shude.tag.PriveTag</tag-class>
    <!-- 如果不需要标签体则设置empty,反之设定jsp -->
    <body-content>empty</body-content>
    <attribute>
        <!-- 设置标签名字 -->
        <name>item</name>
         <!-- 是否是必须,如果非必须没设置则为空 -->
         <required>true</required>
         <!-- 是否可在属性中使用表达式 -->
         <rtexprvalue>true</rtexprvalue>
    </attribute>
 </tag>
 <tag>
    <!-- <p:valid item='${}'/> -->
    <name>prive</name>
    <!-- 标签处理类 -->
    <tag-class>com.shude.tag.PriveTag</tag-class>
    <!-- 如果不需要标签体则设置empty,反之设定jsp -->
    <body-content>jsp</body-content>
    <attribute>
        <!-- 设置标签名字 -->
        <name>value</name>
         <!-- 是否是必须,如果非必须没设置则为空 -->
         <required>true</required>
         <!-- 是否可在属性中使用表达式 -->
         <rtexprvalue>true</rtexprvalue>
    </attribute>
 </tag>
</taglib>

自定义标签 PriveTag.java类

package com.shude.tag;

import java.util.List;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

import com.shude.entity.UserInfo;
import com.shude.util.CommUtil;


/**
 * 自定义标签
 * @author Administrator
 *
 */
public class PriveTag extends TagSupport {

	private static final long serialVersionUID = 4952483547937739096L;
      private String value;
	
	public void setvalue(String value) {
		this.value = value;
	}

	/**
	 * 标签开始时使用的方法
	 */
	@Override
	public int doStartTag() throws JspException {
		Object obj=pageContext.getSession().getAttribute("userInfo");//获取用户表中所有信息
		if(obj!=null){
			UserInfo user=(UserInfo)obj;
			List<String> powerList=CommUtil.newInstance().getRolePowerList(user.getRoleId());//获取用户权限集合
			if(powerList.contains(value))
				return EVAL_BODY_INCLUDE;
		}
		return SKIP_BODY;
	}
}

测试页面test.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!-- 引用标签  -->
<%@ taglib uri="http://shude.com/prive" prefix="p" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>测试页</title>
</head>
<body>
    <!-- 当用户的权限值为find时, 则可以看见测试按钮,否则就不能看见-->
    <div>
    <p:prive value="find">
       <input type="button"  name="test1"  value="测试按钮">
    </p:prive>
    </div>
</body>
</html>
以上内容仅供参考!