アプリケーションでは、Velocityを使用してテンプレート内のプレースホルダーをマージしています。したがって、$ {firstname}は、VelocityContext Hashmapにマージする前に追加するため、ユーザーの名にマージされます。
コード:
public static String evaluateTemplate(final VelocityContext context, final String template){
try {
velocityEngine.init();
StringWriter writer = new StringWriter();
velocityEngine.evaluate(context, writer, "", template);
return writer.toString();
} catch (Exception e) {
...
}
}
これは非常に単純な例であり、テンプレートで使用されていない場合でも、常に名をVelocityContextに追加することは、ユーザープロパティフィールド(Hibernateエンティティからの取得者)がほとんどの場合必要な場合に必要なため、コストのかかる操作ではありません。テンプレートの評価(テンプレートは個人用ページまたは電子メールにすることができます)。ただし、一部の特殊なケースでは、より「高価な」データが必要になります。たとえば、他のアプリケーションからのデータはWebサービスによって取得されます。また、テンプレートに情報を要求するプレースホルダーがない場合でも、テンプレートが読み込まれ、毎回コンテキストハッシュマップに配置されます。
だから私の質問は、必要なときに必要なコンテンツをロードするテンプレートエンジン(「Freemarker」と「Stringtemplate」も知っています)としての代替手段はありますか?オーバーヘッドの少ない、ある種の遅延読み込みテンプレートエンジン