JSP、Sitemesh 和 Tiles 硬核——还有其他选择吗? [关闭]
Posted
技术标签:
【中文标题】JSP、Sitemesh 和 Tiles 硬核——还有其他选择吗? [关闭]【英文标题】:JSP, Sitemesh and Tiles hardcore - any alternatives? [closed] 【发布时间】:2012-03-15 22:46:45 【问题描述】:Tiles 和 Sitemesh 看起来很受欢迎,但与当前来自 e.g. Ruby (ERB) 或 php(Open Power 模板)。如今,模板引擎允许舒适的模板(插入变量、根据上下文自动转义、迭代 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)提供的标记库。
或者 Sitemesh/Tiles 中已经存在所有内容但需要进行大量配置?如果您知道任何可以实现上述所有目标的示例配置,请告诉我。
相关问题:what alternatives exist to Sitemesh to help layout JSP/JSTL page footers/headers in a Spring MVC app? - 我的问题也涉及模板,并且不限于 Spring Web MVC。
【问题讨论】:
为什么你认为 Tiles 2 是老式的?我刚刚忽略了 ERB,但例如,您似乎可以使用 Tiles 2 和 Velocity 实现相同的功能。你需要什么? 这里不鼓励寻求框架建议。如果您想edit 提出所有此类请求,并将此问题设为可以在此处回答而无需单击异地的问题,请这样做并标记以重新打开。谢谢。 【参考方案1】:我一直有supported the idea that JSP is a good-enough view technology 也可用于模板(使用包含)
对于程序化处理,我使用velocity,它相当简单直接。
我在 Java 世界中遇到的最好的视图技术是 grails 的 GSP,但您可能需要将整个 Web 层迁移到 grails,这并不总是一种选择。
最后一点 - 无论你做什么,都不要使用 freemarker。它不必要地复杂,您无法轻松完成简单的任务。
【讨论】:
我以前读过这个。我不得不承认,拥有一个由 Sitemesh、Tiles、Velocity 和大量配置文件组成的复杂堆栈并不好。然而,简单的 JSP 对布局没有任何帮助,而且在模板方面也很弱。习惯了来自 Ruby、PHP 的优秀模板引擎,在 Java 中没有等价物是非常令人沮丧的——我大部分时间都在使用的堆栈。 :( grails 很适合 - (g)rails 这是整个堆栈。我看不出为什么开发人员应该将现有项目迁移到 JSF 只是为了使用 Facelets,迁移到 Grails 只是为了使用 GSP,等等。 所有好东西都在 javascript UI(小部件)框架中 BTW GSP 现在是独立的,可以在 grails 之外使用。所以你不需要将整个应用程序迁移到 grails以上是关于JSP、Sitemesh 和 Tiles 硬核——还有其他选择吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Servlet 页面装饰:人们使用 Tiles、Sitemesh 还是其他东西?
为啥要使用模板引擎? jsp 包括和 jstl vs tile、freemarker、velocity、sitemesh