Tiles和Sitemesh看起来很受欢迎,但是这些东西真的很旧,而且与目前很棒的东西相比,它看起来很糟糕。 Ruby(ERB)或PHP(开放式电源模板)。这些天模板引擎允许舒适的模板化(插入变量,根据上下文自动化,迭代Iterables,访问bean属性)和布局(例如页眉,页脚和覆盖以及添加到父级中定义的某些部分),而无需任何困难的配置,并且没有需要更改当前堆栈(例如您的Web框架)。
示例parent.html:
<html>
<head>
<title>
<layout:part name="title">
Default title
</layout:part>
</title>
<layout:part name="head" />
</head>
<body>
<div class="menu" layout:part="menu">
default menu
</div>
<div class="content" layout:part="content" />
<div class="footer">
(c) me
</div>
</body>
</html>
示例child.html
<layout:extend file="parent.html">
<layout:fill name="title">
Custom title
</layout:fill>
<layout:fill name="contnet">
the content
{$var} from model
</layout:fill>
</layout:extend>
我正在寻找更好的Facelets,这不需要我改变整个堆栈 - 我不会让整个项目适应JSF或Wicket只是为了使用更好的视图。
模板引擎不需要任何额外的servlet或过滤器(没有基于URL的逻辑)。我想以编程方式使用引擎。一个可能的用例是在Spring 3中定义自定义ViewResolver。
如果布局没有在配置文件中预先定义,那将是完美的。如果只是在模板文件中定义父视图,那就不需要了。
框架可能位于JSP之上,但不必如此。优点是可以使用其他框架(例如Spring)提供的taglib。
或者也许Sitemesh / Tiles中已经存在所有内容但需要大量配置?如果您知道任何允许实现所有上述目标的示例配置,请告诉我。
相关问题:what alternatives exist to Sitemesh to help layout JSP/JSTL page footers/headers in a Spring MVC app? - 我的问题也涉及模板化,并不仅限于Spring Web MVC。
答案 0 :(得分:3)
我总是supported the idea that JSP is a good-enough view technology也可用于模板(使用包含)
对于程序化处理,我使用速度,这是相当简单和直接的。
我在Java世界中遇到的最佳视图技术是grails的GSP,但您可能需要将整个Web层迁移到grails,这并不总是一种选择。
最后一点 - 无论你做什么,都不要使用freemarker。这是不必要的复杂,你不能轻易完成简单的任务。