Velocity をテンプレート言語として使用する Struts 1 アプリケーションがあります。Velocity を Freemarker に置き換え、VelocityViewServlet の「toolbox.xml」ファイルに似たものを探しています。(名前を Java クラスにマップできます。これらの名前を使用して、Velocity テンプレートのさまざまな Java クラスのメソッドと変数にアクセスできます)。代わりにFreemarkerで何が可能か誰か知っていますか? これまでのところ、フォーム Bean に関する情報しか見つかりませんでした...誰かが助けてくれたらうれしいです....
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()
BeansWrapper
TemplateMethodModelEx
staticModels.get("com.example.MyStatics")
3 番目の方法は、ものをデータ モデルに入れるのと大差ありませんが、レベルで定義された変数 (おそらくTemplateMethodModelEx
-es とTemplateDirectiveModel
-s を含む)である「共有変数」を使用しConfiguration
ます。