freemarker自定义标签

本文介绍了两种在Freemarker中添加自定义标签的方法:通过编码实现和利用Spring注解。编码实现包括创建自定义解析器及实现TemplateDirectiveModel接口;而Spring注解方式则更加简便。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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种方法随你想用哪一个


可以还需要:   freemarker中使用shiro标签

转载于:https://www.cnblogs.com/zhousiwei/p/10625865.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值