• FreeMarker自定义标签


    freemarker 自定义标签

    有两种方法,一种是Spring注解添加自定义标签 一种的编码添加自定义标签

    第一种:编码添加自定义标签
    步骤一:添加自定义解析器
    创建一个类继承 FreeMarkerConfigurer 类.重写afterPropertiesSet方法

    示例:

    @Override
    public void afterPropertiesSet() throws IOException, TemplateException {
        super.afterPropertiesSet();
        this.getConfiguration().setSharedVariable("boolean",
                new BooleanDirective());
    }
    

    setSharedVariable() 第一个是你freemaker要使用的标签名称 ,可以自定义 ,第二个是你实现的自定义标签

    配置解析器

    <bean class="这个class改成自定义的解析器">
        <property name="templateLoaderPath" value="/WEB-INF/page/" />
    </bean>
    

    详细讲解下BooleanDirective 实现
    创建 BooleanDirective 类 可以自定义名称 实现TemplateDirectiveModel接口
    重写 execute 方法
    Environment 获取输出流。Map 自定义标签传过来的 <key,值> ,TemplateModel[]这个我也不是很清楚,很少用,可以自己去查资料
    TemplateDirectiveBody 用来输出.

    Writer out = env.getOut();
    TemplateScalarModel scalarModel = (TemplateScalarModel) params.get("flag");
    boolean flag = scalarModel.getAsString().equals("123");
    if (flag) {
        body.render(out);
    }else {
        
    }
    

    params.get() 返回有3中数据类型:
    TemplateNumberModel 数字类型, TemplateScalarModel 字符串类型,TemplateBooleanModel boolean类型

    根据你实际的需求走,我这里接收的是TemplateScalarModel类型的
    我得到一个值 然后判断是不是123 如果是的话,进行 标签的内容 输出 ,不是的话 标签的内容就不进行输出
    模版调用:

    [@boolean flag="123"]测试boolean[/@boolean]

    这个flag是你那里map得到的key
    到这里结束了,可以自己去试试.
    还有一个简化添加自定义标签
    Spring注解添加自定义标签

    <bean id="booleanBean" class="com.shiro.freemaker.utils.BooleanDirective"></bean>
    
    <bean id="booleanBean" class="自定义标签全类名"></bean>
    
    <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath" value="/WEB-INF/page/" />
        <property name="freemarkerVariables">
            <map>
                <entry key="boolean" value-ref="我和自定义标签全类名对应" />
            </map>
        </property>
    </bean>
    

    就可以了.2种方法随你想用哪一个

  • 相关阅读:
    Thymeleaf模板引擎语法
    kali更新软件源
    解决kali安装成功后没有声音的问题
    SSO的误区及建议
    关于 target="_blank"漏洞的分析
    好久没来了,平时一些笔记都记在印象笔记,长传一波
    BIOS基础
    CSRF的本质及防御
    linux下stricky
    CSRF与xss的区别
  • 原文地址:https://www.cnblogs.com/zhousiwei/p/10625739.html
Copyright © 2020-2023  润新知