Python の Jinja2 のようなテンプレートを実現できる Spring MVC 互換のテンプレート エンジンはどれですか?
例:
すべてのビューが独自のコンテンツで拡張されるテンプレート ファイル
main.jinja2:
<html>
<head>
<title>{% block title %}{% endblock %}</title>
...
各ビューは、テンプレートの定義済みブロックの一部のみをカスタマイズする必要があります
a_view.jinja2:
{% extends "main.jinja2" %}
{% block title %}A View Page Title{% endblock %}
構文の互換性は必要ありません。基本テンプレートを拡張するというこの概念のみが必要です。
考えられる解決策の 1 つは、JSP テンプレート アプローチを逆にすることです。
main.jsp を作成します。すべてのコントローラーがビューの main.jsp をレンダリングします。
<html>
<head>
<title><jsp:include page="titles/${title_inc}.jsp" /></title>
...
コントローラーから:
@RequestMapping("/")
public String welcome( ModelMap args ) {
args.addAttribute("title_inc", "home");
args.addAttribute("body_inc", "home");
args.addAttribute("message", "A Message!");
return "main";
}
このアプローチを改善できることを願っています。各コントローラーのモデルマップで指定するのではなく、セッション属性からタイトル/本文インクルードの正しい名前を推測することをお勧めします。
パフォーマンスについては懸念があります。main.jsp が (パフォーマンス上の理由で) キャッシュされているかどうかはわかりませんが、このアプローチでは、main.jsp のレンダリング結果をキャッシュする利点のほとんどが事実上無効になります。キャッシュが発生した場合、キャッシュされたコピーを無効にする方法がない場合、このアプローチは機能しない可能性があります。
まだより良いアプローチを求めています。