Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Apache Tiles的更好替代方案_Java_Spring_Spring Mvc_Web Frameworks_Apache Tiles - Fatal编程技术网

Java Apache Tiles的更好替代方案

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文件(只是为了提供一个主体)。在我看来,这太差劲了。或

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

对于Tiles,当我有100个操作时,似乎需要在
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