Java Apache Tiles的更好替代方案
我正在寻找一个比ApacheTiles更好、更容易使用的框架(到目前为止,我已经使用过好几次) 对于Tiles,当我有100个操作时,似乎需要在Java Apache Tiles的更好替代方案,java,spring,spring-mvc,web-frameworks,apache-tiles,Java,Spring,Spring Mvc,Web Frameworks,Apache Tiles,我正在寻找一个比ApacheTiles更好、更容易使用的框架(到目前为止,我已经使用过好几次) 对于Tiles,当我有100个操作时,似乎需要在Tiles.xml中创建100个jsp文件和100个定义 是否有更好的框架来管理我的模板?例如,我想创建两个模板: a) 内容的菜单和列 b) 菜单,内容栏,带横幅的右栏 在这两个模板中,菜单都是常量。在模板b中,右边的列是常量,因此只有内容列不同。对于这个简单的示例,我不想定义扩展模板a的每个JSP文件(只是为了提供一个主体)。在我看来,这太差劲了。或
Tiles.xml
中创建100个jsp文件和100个定义
是否有更好的框架来管理我的模板?例如,我想创建两个模板:
a) 内容的菜单和列b) 菜单,内容栏,带横幅的右栏 在这两个模板中,菜单都是常量。在
模板b
中,右边的列是常量,因此只有内容列不同。对于这个简单的示例,我不想定义扩展模板a的每个JSP文件(只是为了提供一个主体)。在我看来,这太差劲了。或者,也许我太差劲了,我可以在ApacheTiles中定义一个默认模板,但我只是没有正确使用它。无论如何,感谢您的帮助。另一种方法是。
它被设计为网格视图,您无法修改原始视图,因此它更像是一个html转换/装饰框架,而不是像瓷砖这样的模板框架
在我个人看来,Tiles是应用程序的更好方法,我会尝试实现某种解析器(基于一些命名约定),使xml文件过时,但这不是问题所在
@请参阅:显示SiteMesh的工作原理。我最终使用了JSF+Facelets。我将它们与Spring MVC结合在一起,效果非常好。根据经验,我强烈推荐Apache Wicket。(类似于)
你不需要为每一个动作都下定义。
这个样板配置是一个挂起的瓷砖-1天。在引入通配符时,tiles-2确实没有必要使用通配符,尤其是tiles-3和OptionsRenderer
这是一个能帮你解决问题的方法
- 从春天到春天
- 使用通配符的定义
- 使用OptionsRenderer实现回退模式,以及
- 定义组成
总的来说,我建议不要使用瓷砖
如何设置SiteMesh 3
可以对页内模板使用平铺,但对站点范围的模板使用SiteMesh。然而
如何使瓷砖吸得更少:
使用约定而不是配置。例如,将定义放在webapp/WEB-INF/tiles.xml中,就不需要告诉tiles它在哪里
使用通配符:
及
好的,但是我希望有一个带有这种解析器的模板引擎。有类似的吗?我不知道,但我希望解析器解析视图的方式高度依赖于应用程序,另一方面,我希望编写一个视图并不困难。是的,Tiles-3具有您提到的解析能力。查看教程…()我认为在您的情况下,sitemesh可能是一个更好的方法,因为您需要的是简单的,只有两个模板。一旦你设置好它,你就可以忘记它了。你能详细解释一下为什么会这样吗?+1。非常有用,但是如果您有多个default.jsp模板呢?Tiles不知道如何用通配符区分它们,对吗?就像OP的例子一样,他有两个模板。(我意识到在他的情况下,他可以做一个忽略,但这并不总是你想要做的事情。)你不能将一个MVC框架与另一个MVC框架相结合。这是对观念的误解。JSF是与SpringMVC相同的MVC框架。您很可能使用JSF MVC编写了Spring。这里描述了更好的解释:
<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>
<c:set var="titleKey"><tiles:getAsString name="titleKey" /></c:set>
<title><spring:message code="${titleKey}"/></title>
index.title = Welcome to Acme, Inc.
contact-us.title = Contact Us