前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FreeMarker自定义标签

FreeMarker自定义标签

作者头像
試毅-思伟
发布2018-09-06 10:57:05
1.4K0
发布2018-09-06 10:57:05
举报
文章被收录于专栏:Java开发Java开发

freemarker 自定义标签

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

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

示例:

代码语言:javascript
复制
@Override
public void afterPropertiesSet() throws IOException, TemplateException {
    super.afterPropertiesSet();
    this.getConfiguration().setSharedVariable("boolean",
            new BooleanDirective());
}

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

配置解析器

代码语言:javascript
复制
<bean class="这个class改成自定义的解析器">
    <property name="templateLoaderPath" value="/WEB-INF/page/" />
</bean>

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

代码语言:javascript
复制
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注解添加自定义标签

代码语言:javascript
复制
<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种方法随你想用哪一个

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.12.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • freemarker 自定义标签
  • [@boolean flag="123"]测试boolean[/@boolean]
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档