freemarker 实现自定义标签的方法 :
- 使用 <macro></macro> 宏定定义标签
- 实现 TemplateDirectiveModel的 execute() 方法,写相应的Java代码(这种方式更加的灵活)
使用 TemplatedirectiveModel 的 execute 方法 来实现自定义标签
(1)页面调用和对于的实现类关系
(2)文件配置 ,在despatcher-servlet.xml中配置(具体看情况而定)
(3) 参数说明:
- environment : 是环境变量,在这里我们可以拿到 通过 environment.getOut 拿到 Write 。
- map :这里我们可以等到参数,这里的参数是以 键值对的形式存在的。
- templateModel : 是所以数据类型的顶级接口,我们 可以通过 templateMole[i] 通过这个i变量来返回我们指定的第几个参数的返回值。
- templateBody : 是标签开始和结束的 内容 ,通过这个对象的 render()方法我可以接着执行 自定义标签里的 其他标签(freemarker内置标签或者我们自定义标签)
注: 对于 templateMode 使用 StringModel 和 defaultObjectModel 或者 simpleNumber 这个几个对象就够了。
备注: 使用自定义标签 <@标签名称></#@标签名称> 这里使用 [@标签名称][/@标签民称]出现不解析 ,所以还是使用 <@标签名称></#@标签名称>这种格式的为好。
(4)总结:
- 自定义一个标签的处理类并且实现TemplateDirectiveModel接口的 execute 方法(里面写自己处理逻辑) 。
- 定义一个 自定义的 标签 处理类的 javaBean 。
- 配置 despatcherServlet-servlet.xml 文件中的 freemarkerConfig 中的<entry name='directiveNmae' ref-value="xxxxx">属性。
- 在相应的页面调用<@directive>
注意:environment 是代表的当前freemarker运行环境,例如freemarker是和spring MVC 结合的,那么他就能拿到 spring MVC中的一些 DataAndView的值