freemaker 自定义标签的实现

第一步:实现标签的解析过程,当freemaker遇到该标签后,可以根据自定义的参数值解释标签,并将解释后的结果输出到页面上
@Component
public class TimestampLabel implements TemplateDirectiveModel{

	@Override
	public void execute(Environment env, Map params, TemplateModel[] loopVars,
			TemplateDirectiveBody body) throws TemplateException, IOException {
		SimpleNumber timestamp = (SimpleNumber)params.get("val");
		String fdateStr = DateUtil.Date2StringSec(DateUtil.fromUnixTime(timestamp.getAsNumber().intValue()));
		env.getOut().write(fdateStr);
	}

}


第二步:定义一个标签
    <bean id="freemarkerConfig" class=""org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath" value="/WEB-INF/views/"/>
        <property name="freemarkerSettings">
            <props>
                <prop key="template_update_delay">0</prop>
                <prop key="default_encoding">UTF-8</prop>
                <prop key="locale">zh_CN</prop>
                <prop key="url_escaping_charset">UTF-8</prop>
                <prop key="whitespace_stripping">true</prop>
                <prop key="number_format">#</prop>
            </props>
        </property>
        <property name="freemarkerVariables">
            <map>
                <entry key="timestamp" value-ref="timestampLabel"/><!-- 这里定义一个全局的标签-->
            </map>
        </property>
    </bean>


第三步:在ftl模板页使用标签
<@timestamp val=1367029878 />


解析标签后页面展示格式化之后的值
2013-04-27 15:00:00

你可能感兴趣的:(freemaker)