5

Tiles 和 Sitemesh 看起来很流行,但与当前来自 Ruby (ERB) 或 PHP (Open Power Template) 的很棒的东西相比,这些东西真的很旧而且看起来很糟糕。如今,模板引擎允许舒适的模板(插入变量、根据上下文自动转义、遍历 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 中但需要大量配置?如果您知道任何可以实现所有上述目标的示例配置,请告诉我。

相关问题:Sitemesh 有哪些替代方案可以帮助在 Spring MVC 应用程序中布局 JSP/JSTL 页面页脚/页眉?- 我的问题也涉及模板,并且不仅限于 Spring Web MVC。

4

1 回答 1

4

我一直支持这样的想法,即 JSP 是一种足够好的视图技术,也可用于模板(使用包含)

对于程序化处理,我使用速度,它相当简单直接。

我在 Java 世界中遇到的最好的视图技术是 grails 的 GSP,但您可能需要将整个 Web 层迁移到 grails,这并不总是一种选择。

最后一点 - 无论你做什么,都不要使用 freemarker。它是不必要的复杂,你不能轻易地完成简单的任务。

于 2012-02-25T22:13:31.280 回答