JSP,Sitemesh和Tiles铁杆 - 任何替代品?

时间:2012-02-25 22:01:11

标签: jsp java-ee spring-mvc tiles sitemesh

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。

1 个答案:

答案 0 :(得分:3)

我总是supported the idea that JSP is a good-enough view technology也可用于模板(使用包含)

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

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

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