sitemesh页面排除

时间:2012-04-07 21:17:41

标签: java sitemesh

我想从装饰中排除一组页面(使用sitemesh 2和spring-mvc 3.1)。这是我的decorators.xml:

<decorators defaultdir="/WEB-INF/decorators">
    <excludes>
        <pattern>/WEB-INF/view/data/tabs</pattern>
    </excludes>
    <decorator name="main" page="main.jspx">
        <pattern>/WEB-INF/view/*</pattern>
        <pattern>/*</pattern>
    </decorator>
</decorators>

然后在我的页面中,我使用带有ajax加载页面的jquery-ui标签,如下所述:http://jqueryui.com/demos/tabs/#ajax。显然,我不希望再次装饰选项卡中的内容!除了上面列出的内容之外,我还尝试将模式设为/WEB-INF/view/data/tabs/*,但这也不起作用。

3 个答案:

答案 0 :(得分:1)

我通过提供绝对路径来实现它,例如/spring/data/tabs/*,(web.xml拦截/spring/*并发送到DispatcherServlet)。

答案 1 :(得分:0)

web.xml是启动webapp的容器读取的主要属性文件 它将截取点作为应用程序的起点,因此您对文件进行的每个定义都将从此处开始作为相对路径。

答案 2 :(得分:0)

我有同样的问题,我通过这种方式解决了添加一个名为“no”的新装饰:

<?xml version="1.0" encoding="UTF-8"?>
<decorators defaultdir="/WEB-INF/layouts/">
    <excludes>
        <pattern>/static/*</pattern>
        <pattern>/api/*</pattern>
        <pattern>/</pattern>
    </excludes>
    <decorator name="default" page="default.jsp">
        <pattern>/*</pattern>
    </decorator>
    <decorator name="no" page=""></decorator>
</decorators>

并将元添加到您不想使用装饰器的页面:

<meta name="decorator" content="no" />