【问题标题】:Sitemesh mapping multiple decorators won't work as expectedSitemesh 映射多个装饰器将无法按预期工作
【发布时间】:2016-05-17 17:01:14
【问题描述】:

我正在尝试使用 sitemesh 3 来装饰具有多个装饰器的页面。 当我添加更多页面时会出现问题,一些页面被另一个装饰器装饰,导致页面装饰不正确。

这是我想要做的:

  • 用 2 个装饰器装饰 //login
  • 用 2 个不同的装饰器装饰 /welcome

sitemesh3.xml 到目前为止看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<sitemesh>
    <mapping>
        <path>/</path>
        <decorator>/decorator1.jsp</decorator>
        <decorator>/decorator1-2.jsp</decorator>
    </mapping>
    <mapping>
        <path>/login</path>
        <decorator>/decorator1.jsp</decorator>
        <decorator>/decorator1-2.jsp</decorator>
    </mapping>
    <mapping>
        <path>/welcome</path>
        <decorator>/decorator2.jsp</decorator>
        <decorator>/decorator2-2.jsp</decorator>
    </mapping>
</sitemesh>

问题是/welcomedecorator1decorator1-2 装饰

谁能解释我在这里错过了什么?

顺便说一句,我可以使用多个 &lt;path&gt; 内部映射来映射一个或多个装饰器上的多个位置,还是必须单独声明每个路径。

我知道我可以使用/* 来映射所有页面,但如果我想要类似的东西怎么办:

<mapping>
    <path>/admin/*</path>
    <path>/manage/*</path>
    <path>/secured/admin/*</path>
    <decorator>decorator.jsp</decorator>
</mapping>

【问题讨论】:

    标签: jsp sitemesh


    【解决方案1】:

    对于第二个问题,答案是肯定的。你可以在&lt;mapping&gt;中添加多个&lt;path&gt;,所有路径都会被修饰。
    回到你的第一个问题,如果你用一些装饰器装饰/或/*,它们将应用于所有页面。这意味着,如果您想要专门装饰页面,请不要使用 / 或 /*。以下配置来自我当前的项目。

    <mapping path="/*" decorator="/WEB-INF/decorators/menu.ftl"/>
    
    <mapping>
        <path >/catalog/*</path>
        <path >/attribute/*</path>
        <decorator>/WEB-INF/decorators/product_menu.ftl</decorator>
        <decorator>/WEB-INF/decorators/menu.ftl</decorator>
    </mapping>
    
    <mapping>
        <path >/member/comment*</path>
        <decorator>/WEB-INF/decorators/comment_menu.ftl</decorator>
        <decorator>/WEB-INF/decorators/menu.ftl</decorator>
    </mapping>
    

    如您所见,所有页面都由 menu.ftl 进行装饰,我们还为其他页面提供了一些特定的装饰器。

    【讨论】:

      猜你喜欢
      • 2012-04-15
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多