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 还是其他东西?

SiteMesh入门(1-1)SiteMesh是什么?

Sitemesh或瓷砖[关闭]

Apache Tiles 退休了。备择方案?

为啥要使用模板引擎? jsp 包括和 jstl vs tile、freemarker、velocity、sitemesh

使用 sitemesh/decorator装饰器装饰jsp页面(原理及详细配置)