jsp如何自定義tag的標籤庫?

Gin.p發表於2016-01-02

  雖然和上一次的使用自定義的tld標籤簡化jsp的繁瑣操作的有點不同,但是目的也是一致的。自定義tag比較簡單。

 1、新建tag標籤

  在WEB-INF目錄下新建一個tags的資料夾,是自定義tag標籤的位置。

2、編輯標籤

<%@ tag import="org.apache.shiro.util.StringUtils"%>
<%@ tag import="org.apache.shiro.SecurityUtils" %>
<%@ tag import="org.apache.shiro.subject.Subject" %>
<%@ tag import="java.util.Arrays" %>
<%@ tag pageEncoding="UTF-8" trimDirectiveWhitespaces="true"%>
<%@ attribute name="name" type="java.lang.String" required="true" description="角色字串列表" %>
<%@ attribute name="delimiter" type="java.lang.String" required="false" description="角色字串列表分隔符" %>
<%
    if(!StringUtils.hasText(delimiter))
        delimiter = ",";
    
    if(!StringUtils.hasText(name)){
        return ;
    }
    
    String[] roles = name.split(delimiter);
    Subject subject = SecurityUtils.getSubject();
    if(subject.hasAllRoles(Arrays.asList(roles))){
        %>
        <jsp:doBody/>
        <%
    };
%>

  tag一些標籤的屬性不太複雜,一看就能懂得。<jsp:doBody/>表示如果符合條件就執行一次自定義標籤的內容。

3、使用

<%@ taglib prefix="test" tagdir="/WEB-INF/tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<test:hasAllRole name="admin">
admin
</test:hasAllRole>
</body>
</html>

  jsp引入標籤庫,注意標籤庫的引用地址是tagdir,而不是uri。上述例子表示使用者有admin這個角色頁面就顯示admin。

相關文章