srpingBoot整合FreeMarker自定义标签实现权限自定义按钮隐藏显示

srpingBoot整合freeMarker自定义标签实现权限自定义按钮隐藏显示

记一次利用自定义标签实现系统的权限控制,以前用jsp的时候就有用过自定义标签,不过现在一般都不直接用jsp了,这次我们采用的是freeMarker模板

  1. 首先,项目引用相关依赖

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-freemarkerartifactId>
        dependency>
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <version>3.1.0version>
            <scope>providedscope>
        dependency>
        <dependency>
            <groupId>javax.servlet.jspgroupId>
            <artifactId>jsp-apiartifactId>
            <version>2.2version>
            <scope>providedscope>
        dependency>
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>jstlartifactId>
            <version>1.2version>
          dependency>
  1. 配置freeMarker相关配置,其实在springBoot中,基本已经没什么配置了,如下是application.yml,主要就是配置了后缀,默认的视图前缀路径是templates,如果想要自定义路径的话,可以在template-loader-path中配置

    
    server:
      port: 8080
      context-path: /oneceking
    spring:
      http:
        encoding:
          charset: UTF-8
      freemarker:
        suffix: .html
        content-type: text/html; charset=utf-8
  2. 自定义标签,我是讲标签放在了新建的webapps/WEB-INF下了名字随便取

    
     version="1.0" encoding="UTF-8"?>
    
    <taglib>
        <tlibversion>1.0tlibversion>
        <jspversion>1.1jspversion>
        <shortname>privilegeshortname>
        <tag>
            <name>privilegename>
            <tagclass>com.logicthinking.oneceking.commons.tag.AuthTagtagclass>
            <bodycontent>emptybodycontent> 
            <attribute>
                <name>menuAliasname>
                <required>truerequired>
                <rtexprvalue>truertexprvalue>
            attribute>
            <attribute>
                <name>priAliasname>
                <required>truerequired>
                <rtexprvalue>truertexprvalue>
            attribute>
        tag>
    taglib>
  3. 定义标签处理类

    
    /**
     * 
     */
    package com.logicthinking.oneceking.commons.tag;
    
    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.tagext.BodyTagSupport;
    
    import lombok.Getter;
    import lombok.Setter;
    
    /**
     * @author 陈礼佳
     * @date 2018年6月29日
     */
    @Setter
    @Getter
    public class AuthTag extends BodyTagSupport {
    
        /**
         * 
         */
        private static final long serialVersionUID = 663970963481626509L;
        
        private String value;
        /**
         * 父类中有几个返回状态,其中SKIP_BODY代表不显示内容,EVAL_BODY_INCLUDE代表显示
         * 这里直接让他隐藏了,可以加自己的处理逻辑
         */
        @Override
        public int doStartTag() throws JspException {
    
            return SKIP_BODY;
        }
    
        @Override
        public int doEndTag() throws JspException {
            // TODO Auto-generated method stub
            return super.doEndTag();
        }
    }
  4. 编写freemarker模板页面

    
    <#assign my=JspTaglibs["/WEB-INF/auth.tld"]> 
    
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title heretitle>
    head>
    <body>
    这是freemarker
    <@my.privilege value="jjj">
        显示
    @my.privilege>
    body>
    html>
  5. 编写控制器,跳转页面查看结果

    
        @GetMapping("admin")
        public String test1(){
            return "main";
        }
  6. 最后效果

  7. srpingBoot整合FreeMarker自定义标签实现权限自定义按钮隐藏显示_第1张图片

你可能感兴趣的:(springboot)