为集成在spring中的freemarker添加自定义标签

对freemarker不是很熟悉,但是它的文档还是很完善的,所以想学习还是很方便的。

介于工程使用的freemarker已经集成大spring中了,我就直接使用这种集成类型的了 就没有学那个用Conguire去自己写的了。

集成到spring中难免会有下面的配置:

  1. <bean id="freemarkerConfig" 
  2.         class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> 
  3.         <property name="templateLoaderPath" value="/WEB-INF" /><!--模板的加载路径--> 
  4.         <property name="freemarkerSettings"> 
  5.             <props> 
  6.                 <prop key="template_update_delay">0</prop><!--模板刷新的时间,如果经常调试就用0 了--> 
  7.  
  8.                 <prop key="defaultEncoding">UTF-8</prop> 
  9.                 <prop key="url_escaping_charset">UTF-8</prop> 
  10.                 <prop key="locale">zh_CN</prop> 
  11.                 <prop key="boolean_format">true,false</prop> 
  12.                 <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop> 
  13.                 <prop key="date_format">yyyy-MM-dd</prop> 
  14.                 <prop key="time_format">HH:mm:ss</prop> 
  15.                 <prop key="number_format">0.######</prop> 
  16.                 <prop key="whitespace_stripping">true</prop> 
  17.                 <prop key="auto_import">/ftl/index.ftl as p</prop><!--这个是关键了,就是自动加载的模板,我们为了减少手动加载,大可以在这里让程序自动加载,但是又不能在这里写太多的文件名,所以就可以使用include指令,在index.ftl中include其他的ftl文件加载--> 
  18.             </props> 
  19.         </property> 
  20.     </bean> 
<bean id="freemarkerConfig"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<property name="templateLoaderPath" value="/WEB-INF" /><!--模板的加载路径-->
		<property name="freemarkerSettings">
			<props>
				<prop key="template_update_delay">0</prop><!--模板刷新的时间,如果经常调试就用0 了-->

				<prop key="defaultEncoding">UTF-8</prop>
				<prop key="url_escaping_charset">UTF-8</prop>
				<prop key="locale">zh_CN</prop>
				<prop key="boolean_format">true,false</prop>
				<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
				<prop key="date_format">yyyy-MM-dd</prop>
				<prop key="time_format">HH:mm:ss</prop>
				<prop key="number_format">0.######</prop>
				<prop key="whitespace_stripping">true</prop>
				<prop key="auto_import">/ftl/index.ftl as p</prop><!--这个是关键了,就是自动加载的模板,我们为了减少手动加载,大可以在这里让程序自动加载,但是又不能在这里写太多的文件名,所以就可以使用include指令,在index.ftl中include其他的ftl文件加载-->
			</props>
		</property>
	</bean>
好,如果我们要自定义一个标签,那么先写好标签的ftl文件,然后在index.ftl中include进去,这样就可以自动的加载这个自定义的标签了。假设要添加的标签名称为copyright,用来显示版权信息,文件命名为copyright.ftl.里面的内容如下:

  1. <#macro copyright date="2012@"
  2. power by scnu ${date} 
  3. </#macro> 
<#macro copyright date="2012@">
power by scnu ${date}
</#macro>
然后在index.ftl中添加include语句,index.ftl文件的内容是:

  1. <#include "copyright.ftl"/> 
<#include "copyright.ftl"/>
好,就此一个自定义标签写完了。我们可以在html中以下面的形式使用copyright标签:

  1. <@p.copyright date="2012"></@p.copyright> 
<@p.copyright date="2012"></@p.copyright>

就会输出下列内容:

  1. power by scnu 2012 
power by scnu 2012
标签定义的基本语法就去查阅了,地址 http://freemarker.sourceforge.net/上面有中文版手册,是南磊翻译的挺不错的,赞。

另外有一点,如果eclipse工程是开着的,这时候添加了ftl文件后,请refresh工程将刚刚写的文件加载进来,不然会有如下错误:

  1. java.io.FileNotFoundException: Template ftl/pony/ui/copyright.ftl not found. 
 java.io.FileNotFoundException: Template ftl/pony/ui/copyright.ftl not found.

好,至此,完成。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值