1

我有一个使用 Velocity 作为模板语言的 Struts 1 应用程序。我将用 Freemarker 替换 Velocity,并从 VelocityViewServlet 中寻找类似于“toolbox.xml”的文件。(在那里您可以将名称映射到 Java 类,并且使用这些名称可以访问 Velocity 模板中各种 Java 类的方法和变量)。有人知道,用 Freemarker 代替有什么可能?到目前为止,我只找到了有关表单豆的信息...如果有人可以提供帮助会很高兴....

4

1 回答 1

1

对于与视图相关(而非模型相关)的实用程序函数和宏,标准做法是在 FreeMarker 中实现它们并将它们放入一个或多个模板中并#import(或#include)它们。也可以将TemplateDirectiveModel-s 和TemplateMethodModelEx-es(它们类似于宏和函数,但它们是用 Java 实现)引入您将 #import/#inlcude as 的模板<#assign foo = 'com.example.Foo'?new()>

在调用普通静态 Java 方法时,您可以使用ObjectWrapper's getStaticModels()(假设它是一个BeansWrapper子类),然后将所需的方法作为TemplateMethodModelEx-es 和staticModels.get("com.example.MyStatics"). 现在有了它们,您可以将它们放入 Controller 中的数据模型(Velocity 上下文)中,或者在#import-ed 模板中从中挑选方法等。当然,您也可以将 POJO 对象放入数据中-model 所以你可以调用他们的非静态方法。

第三种方法,与将事物放入数据模型没有太大区别是使用“共享变量”,它是在级别上定义的变量(可能包括TemplateMethodModelEx-es 和TemplateDirectiveModel-s) 。Configuration

于 2012-01-10T15:10:51.107 回答