哪个 Spring MVC 兼容的模板引擎可以让我实现 Python 的 Jinja2 样模板?
例子:
一个模板文件,所有视图都使用自己的内容进行扩展
main.jinja2:
<html>
<head>
<title>{% block title %}{% endblock %}</title>
...
每个视图只需要自定义一些模板定义的块
a_view.jinja2:
{% extends "main.jinja2" %}
{% block title %}A View Page Title{% endblock %}
我不需要语法兼容性,只需要扩展基本模板的概念。
一种可能的解决方案是反转 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 的结果的大部分好处。如果缓存确实发生了,如果没有办法使缓存的副本无效,这种方法甚至可能不起作用。
仍在寻求更好的方法。