freemarker自定义标签的作用及其实现

来源:互联网 发布:微软程序员认证 编辑:程序博客网 时间:2024/05/20 03:44

最近在看jeecms的项目,其中用到freemarker的宏定义,还有freemarker的自定义标签的功能

我看了一定的时间后,自己做出了一个总结,还望各位前辈能够帮忙修正

freemarker宏定义的出现是为了解决页面模板问题,

freemarker自定义标签的功能是为了解决,页面取后台的传值问题

对于自定义标签的步骤,明天在写嘿嘿

第一步:实现freemarker中TemplateDirectiveModel接口

public class TestCms implements TemplateDirectiveModel  {

public void execute(Environment env, Map params, TemplateModel[] loopVars,
            TemplateDirectiveBody body)  {

            }

}

各个参数的意义详解

@param env:系统环境变量,通常用它来输出相关内容,如Writer out = env.getOut();

@param params 页面上传过来的值,以键值对的形式保存

@param loopVars  循环替代变量

@param body 用于处理自定义标签中的内容,如<@myDirective>将要被处理的内容</@myDirective>;当标签是<@myDirective />格式时,body=null


第二步:注入FreeMarkerConfigurer的freemarkerVariables中。

在jeecms-servlet-front.xml

<entry key="cms_test" value-ref="cms_test"/>

<bean id="cms_test" class="com.jeecms.cms.action.directive.TestCms"/>


第三步:调用自定义指令:

 [@cms_test]
             bar
                 [#list ["red", "green", "blue"] as color]
                      ${color}
                [/#list]
            baaz

[/@cms_test]


第四步:

显示输出结果:




0 0
原创粉丝点击