Fix*_*xus 17 java spring web-frameworks spring-mvc apache-tiles
我正在寻找一个比Apache Tiles更好更容易使用的框架(到目前为止,我已经使用了几次).
使用Tiles,似乎当我有100个动作时,我需要创建100个jsp文件并在其中创建100个定义tiles.xml.
是否有更好的框架来管理我的模板?我想创建,例如,2个模板:
a)内容的菜单和列
b)菜单,内容列,右栏和横幅
在两个模板中,菜单都是常量.在template b,右列是常量,因此只有内容列不同.对于这个简单的例子,我不想定义扩展它的每个JSP文件template a(只是为了提供一个体).那是跛脚的imo.或许我很蹩脚,我可以在Apache Tiles中定义一个DEFAULT模板,我只是没有正确使用它.在任何情况下,所有帮助表示赞赏.
Nei*_*gan 15
总的来说,我会推荐SiteMesh而不是Tiles.
以下是如何设置SiteMesh 3
您可以将Tiles用于页内模板,但将SiteMesh用于站点范围的模板.不过...
如何使Tiles减少吸引力:
使用约定优于配置.例如,将您的定义放入其中,webapp/WEB-INF/tiles.xml并且无需告诉磁贴它的位置.
使用通配符:
<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>
Run Code Online (Sandbox Code Playgroud)
如果控制器返回视图名称index,它将与定义匹配*,并使用JSP文件/WEB-INF/views/index.jsp作为正文,并使用message属性index.title.
如果控制器返回视图名称contact-us,它将与定义匹配*,并使用JSP文件/WEB-INF/views/contact-us.jsp作为正文,并使用message属性contact-us.title
在您的模板中,添加:
<c:set var="titleKey"><tiles:getAsString name="titleKey" /></c:set>
Run Code Online (Sandbox Code Playgroud)
和
<title><spring:message code="${titleKey}"/></title>
Run Code Online (Sandbox Code Playgroud)
将ReloadableResourceBundleMessageSourcebean 添加到servlet应用程序上下文中.
制作一个文件/src/main/resources/messages.properties,内容如下:
index.title = Welcome to Acme, Inc.
contact-us.title = Contact Us
Run Code Online (Sandbox Code Playgroud)
我最终使用了JSF + Facelets.我将它们与Spring MVC结合起来,就像一个魅力.
| 归档时间: |
|
| 查看次数: |
17846 次 |
| 最近记录: |