[英]Has Freemarker something similar to toolbox.xml-file of Velocity?
我有一个Struts 1应用程序,它可以将Velocity作为模板语言使用。 我将用Freemarker替换Velocity,并在VelocityViewServlet中寻找类似于'toolbox.xml'-File的东西。 (您可以将名称映射到Java类,并使用这些名称可以访问Velocity模板中各种Java类的方法和变量)。 有人知道吗,用Freemarker可以代替吗? 到目前为止,我只发现了有关bean表格的信息...如果有人可以提供帮助,将非常高兴....
对于与视图相关(而不与模型相关)的实用程序功能和宏,标准做法是在FreeMarker中实现它们并将它们放入一个或多个模板中,然后#import(或#include)它们。 也可以将TemplateDirectiveModel
-s和TemplateMethodModelEx
-es(它们与宏和函数相似,但是它们是用Java实现的)引入模板中,您将<#assign foo = 'com.example.Foo'?new()>
/# <#assign foo = 'com.example.Foo'?new()>
作为<#assign foo = 'com.example.Foo'?new()>
。
在调用普通静态Java方法时,可以使用ObjectWrapper
的getStaticModels()
(假设它是BeansWrapper
子类),然后使用staticModels.get("com.example.MyStatics")
获得所需的方法,例如TemplateMethodModelEx
-es。 现在,有了它们,您可以将它们放入Controller的数据模型(Velocity上下文)中,或者在#import-ed模板中从它们中选择方法,等等。当然,您也可以将POJO对象放入数据中-model,以便您可以调用其非静态方法。
第三种方法与将数据放入数据模型没什么不同,是使用“共享变量”,它们是在Configuration
级别定义的变量(可能包括TemplateMethodModelEx
-es和TemplateDirectiveModel
-s)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.