Apache Tiles的更好替代品

我正在寻找一个比Apache Tiles更好更容易使用的框架(到目前为止,我曾经使用过几次)。

使用Tiles,似乎当我有100个动作时,我需要创建100个jsp文件并在tiles.xml创建100个定义。

是否有更好的框架来管理我的模板? 我想创建,例如,2个模板:

a)内容的菜单和列
b)菜单,内容列,右栏和横幅

在两个模板中,菜单都是不变的。 在template b ,右列是常量,因此只有内容列不同。 对于这个简单的例子,我不想定义扩展template a每个JSP文件(只是为了提供一个体)。 那是跛脚的imo。 或许我很蹩脚,我可以在Apache Tiles中定义一个DEFAULT模板,我只是没有正确使用它。 在任何情况下,所有帮助赞赏。

总的来说,我会推荐SiteMesh而不是Tiles。

以下是如何设置SiteMesh 3

您可以将Tiles用于页内模板,但将SiteMesh用于站点范围的模板。 不过…

如何使Tiles减少吸引力:

  1. 使用约定优于配置。 例如,将您的定义放在webapp/WEB-INF/tiles.xml并且不需要告诉tile它在哪里。

  2. 使用通配符:

         

如果控制器返回视图名称index ,它将匹配定义* ,并使用JSP文件/WEB-INF/views/index.jsp作为正文,并使用消息属性index.title

如果您的控制器返回视图名称contact-us ,它将匹配定义* ,并使用JSP文件/WEB-INF/views/contact-us.jsp作为正文,并使用消息属性contact-us.title

在您的模板中,添加:

  

 <spring:message code="${titleKey}"></spring:message> 

ReloadableResourceBundleMessageSource bean添加到servlet应用程序上下文中。

创建一个文件/src/main/resources/messages.properties ,内容如下:

 index.title = Welcome to Acme, Inc. contact-us.title = Contact Us 

另一种方法是Sitemesh 。 它被设计为网格视图,你不能修改原始,所以它更像是一个html转换/装饰框架而不是像Tiles这样的模板框架。

在我个人看来,Tiles是更好的应用方法,我会尝试实现某种解析器(基于一些命名约定),使xml文件过时,但这不是问题。

@See: 这个旧的介绍显示了SiteMesh的工作原理。

(与此类似)

您不需要为每个操作定义。

这种样板配置是瓷砖挂起1天。 引入通配符时,实际上没有必要使用tiles-2,特别是使用tiles-3和OptionsRenderer。

这是一个可以帮助您的教程

  • 弹簧与瓷砖整合,
  • 带通配符的定义,
  • 使用OptionsRenderer实现回退模式,和
  • 定义组成。

我最终使用了JSF + Facelets。 我将它们与Spring MVC结合起来,就像一个魅力。

根据经验,我强烈推荐Apache Wicket。

    Interesting Posts