gpt4 book ai didi

java - Apache Tiles 的更好替代品

转载 作者:IT老高 更新时间:2023-10-28 13:51:54 26 4
gpt4 key购买 nike

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

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

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

a) 菜单和内容栏
b) 菜单、内容栏、带横幅的右栏

在这两个模板中,菜单都是不变的。在template b中,右列是常量,所以只有内容列不同。对于这个简单的示例,我不想定义扩展 template a 的每个 JSP 文件(只是为了提供一个主体)。那是蹩脚的imo。或者也许我很蹩脚,我可以在 Apache Tiles 中定义一个 DEFAULT 模板,但我没有正确使用它。无论如何,感谢所有帮助。

最佳答案

总的来说,我会推荐 SiteMesh在瓷砖上。

Here's如何设置 SiteMesh 3

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

如何让 Tiles 吸得更少:

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

  2. 使用通配符:

<definition name="default" template="/WEB-INF/templates/default.jsp">
<put-attribute name="titleKey" value=""/>
<put-attribute name="body" value=""/>
</definition>

<definition name="*" extends="default">
<put-attribute name="titleKey" value="{1}.title"/>
<put-attribute name="body" value="/WEB-INF/views/{1}.jsp" />
</definition>

如果你的 Controller 返回 View 名称index,它将匹配定义*,并使用JSP文件/WEB-INF/views/index.jsp 为正文,并使用消息属性 index.title

如果你的 Controller 返回 View 名称contact-us,它将匹配定义*,并使用JSP文件/WEB-INF/views/contact -us.jsp 为正文,并使用消息属性 contact-us.title

在您的模板中,添加:

<c:set var="titleKey"><tiles:getAsString name="titleKey" /></c:set>

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

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

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

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

关于java - Apache Tiles 的更好替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9748481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com