虽然和上一次的使用自定义的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。
时间: 2024-10-15 01:50:32