1

我有以下tile-def.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
   "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<definition name="default" template="/WEB-INF/jsp/layout.jsp">
    <put-attribute name="title" value="my webapp" />
    <put-attribute name="header" value="/WEB-INF/jsp/header.jsp" />
    <put-attribute name="menu" value="/WEB-INF/jsp/menu.jsp" />
    <put-attribute name="body" value="/WEB-INF/jsp/hello.jsp" />
    <put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp" />
</definition>

<definition name="contact" extends="default">
    <put-attribute name="body" value="/WEB-INF/jsp/contact.jsp" />
</definition>

<definition name="hello" extends="default">
    <put-attribute name="body" value="/WEB-INF/jsp/hello.jsp" />
</definition>
</tiles-definitions>

如您所见,在我的所有页面中,只有正文发生了变化。有没有办法自动化这个?(所以它会自动包含具有请求页面名称的jsp,或者如果它不存在则包含错误页面?)

谢谢!

编辑:我想做的更多细节:

现在情况如何:对于我的 webapp 的每个新页面,我都必须在我的 tiles-def.xml 中添加一个新页面。每次,它唯一做的就是用我的内容页面设置正文。

我想做的事:只有一个自动选择要显示的页面的默认定义,如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
   "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<definition name="default" template="/WEB-INF/jsp/layout.jsp">
    <put-attribute name="title" value="my webapp" />
    <put-attribute name="header" value="/WEB-INF/jsp/header.jsp" />
    <put-attribute name="menu" value="/WEB-INF/jsp/menu.jsp" />
    if(myPageName exists){
        <put-attribute name="body" value="/WEB-INF/jsp/" + myPageName + ".jsp" />
    else{
        <put-attribute name="body" value="/WEB-INF/jsp/error404.jsp" />
    }
    <put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp" />
</definition>
</tiles-definitions>

其中 myPageName 是请求页面的名称(如果 URL 是“http://www.mysite.com/contact.html”,那么 myPageName 就是“contact”。如果是“http://www.mysite .com/info.html”,那么 myPageName 将是“info”)。

我怎样才能做到这一点?

4

1 回答 1

1

查看springbyexample.org 页面上的动态图块示例。DynamicTilesView 完全符合您的要求(请参阅此处的示例配置)。完整的动态瓷砖示例可以在 github 上找到

于 2012-08-31T08:33:18.260 回答