• jsp如何自定义tag的标签库?


      虽然和上一次的使用自定义的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。

  • 相关阅读:
    一周随笔--15.10.06
    KVC/KVO总结
    一周随笔--15.9.28
    一周随笔--15.9.21
    CocoaPods使用中的invalid byte sequence in US-ASCII错误
    自定义TabBar
    FMDB配合sqlite使用
    常用第三方库
    LLDB编译器命令
    coreData
  • 原文地址:https://www.cnblogs.com/ginponson/p/5094356.html
Copyright © 2020-2023  润新知