【问题标题】:Sitemesh take place of whole view springSitemesh 代替全视图spring
【发布时间】:2015-11-05 21:01:58
【问题描述】:

我在我的 spring mvc 项目中使用了 sitemess。请先看我的代码。

装饰器.xml

<decorator name="main-layout" page="main-layout.jsp">
    <pattern>/products</pattern>
    <pattern>/welcome</pattern>
    <pattern>/admin</pattern>
    <pattern>/ajax</pattern>
</decorator>

web.xml

<!-- Spring MVC -->
<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/mvc-dispatcher-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

    <!-- Loads Spring Security config file -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/spring/spring-security.xml
    </param-value>
</context-param>

<!-- Spring Security -->
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy
    </filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<!--  Sitemesh: Decorates pages with layouts  -->
<filter>
    <filter-name>sitemesh</filter-name>
    <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>sitemesh</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

在我的主布局中,我只导入了一个导航栏。问题是它只显示我网站的每个视图的主布局(只显示导航栏)。

【问题讨论】:

    标签: java spring-mvc sitemesh


    【解决方案1】:

    您只定义了一个装饰器,因此每个页面只应用该布局是合乎逻辑的,您需要在您的 decorator.xml 中定义其他布局

    通常这就是我的 decorator.xml 的样子

     <decorator name="main" page="outer.jsp">
            <pattern>*/public/login*</pattern>
    </decorator>
            
    <decorator name="default" page="default.jsp">
            <pattern>*app*</pattern>
    </decorator>
    

    还要确保在每个布局文件中都有&lt;decorator:body/&gt;,这是显示内页内容的占位符。

    类似的东西

    <body>
       <nav></nav>
       <aside></aside>
       <decorator:body/>
    </body>
    

    【讨论】:

    • 我用不同的目录创建了类似的页面。但 Sitemesh 不工作,而是从邮件布局文件中获取。可能是什么问题? &lt;decorators defaultdir="/Page/Decorators"&gt; &lt;excludes&gt; &lt;!-- Exclude the specific page from the decorator --&gt; &lt;pattern&gt;/index.jsp&lt;/pattern&gt; &lt;/excludes&gt; &lt;decorator name="user" page="layoutUser.jsp"&gt; &lt;pattern&gt;*/User/*&lt;/pattern&gt; &lt;/decorator&gt; &lt;decorator name="main" page="layoutMain.jsp"&gt; &lt;pattern&gt;/*&lt;/pattern&gt; &lt;/decorator&gt; &lt;/decorators&gt;
    猜你喜欢
    • 2010-12-15
    • 2011-05-21
    • 2013-11-15
    • 2015-05-15
    • 2014-05-30
    • 2011-02-14
    • 2017-05-24
    • 2011-11-01
    相关资源
    最近更新 更多