1

Velocity をテンプレート言語として使用する Struts 1 アプリケーションがあります。Velocity を Freemarker に置き換え、VelocityViewServlet の「toolbox.xml」ファイルに似たものを探しています。(名前を Java クラスにマップできます。これらの名前を使用して、Velocity テンプレートのさまざまな Java クラスのメソッドと変数にアクセスできます)。代わりにFreemarkerで何が可能か誰か知っていますか? これまでのところ、フォーム Bean に関する情報しか見つかりませんでした...誰かが助けてくれたらうれしいです....

4

1 に答える 1

1

ビューに関連する (モデルに関連しない) ユーティリティ関数とマクロの場合、標準的な方法は、それらを FreeMarker に実装し、1 つまたは複数のテンプレートに配置して #import (または #include) することです。TemplateDirectiveModel-s とTemplateMethodModelEx-es (これらはマクロと関数に似ていますが、Java で実装されています) を #import/#inlcude as としてテンプレートに取り込むこともできます<#assign foo = 'com.example.Foo'?new()>

プレーンな静的 Java メソッドを呼び出す場合、 を(サブクラスであると仮定してObjectWrapper)使用し、必要なメソッドを-es withとして取得できます。それらを取得したので、それらをコントローラーのデータモデル (Velocity コンテキスト) に配置したり、#import されたテンプレートなどでそれらからメソッドを選択したりできます。もちろん、POJO オブジェクトをデータに配置することもできます。 -model を使用して、非静的メソッドを呼び出すことができます。getStaticModels()BeansWrapperTemplateMethodModelExstaticModels.get("com.example.MyStatics")

3 番目の方法は、ものをデータ モデルに入れるのと大差ありませんが、レベルで定義された変数 (おそらくTemplateMethodModelEx-es とTemplateDirectiveModel-s を含む)である「共有変数」を使用しConfigurationます。

于 2012-01-10T15:10:51.107 に答える