首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sitemesh不装饰返回视图

Sitemesh不装饰返回视图
EN

Stack Overflow用户
提问于 2014-04-16 03:39:46
回答 1查看 2.4K关注 0票数 4

我已经咨询过Sitemesh does not decorate returned views,但这篇文章对我不起作用。

我希望sitemesh只装饰.jsp页面,但是当控制器返回一个视图时,它不会被修饰。

这是我web.xml的一部分

代码语言:javascript
复制
  <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>

这是我的decorators.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>    
<decorators>
    <decorator name="basicLayout" page="/WEB-INF/decorators/base_layout.jsp">
        <pattern>*.jsp</pattern>
    </decorator>
</decorators>

我使用InternalResourceViewResolver将我的视图从逻辑名解析为实际路径:

代码语言:javascript
复制
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
    p:viewClass="org.springframework.web.servlet.view.JstlView"
    p:prefix="/WEB-INF/jsp/"
    p:suffix=".jsp" />

这位是我的主计长

代码语言:javascript
复制
@Controller
public class UserController {
    @RequestMapping("/user/registration")
    public String registrationForm() {
        return "user/registration";
    }   
}

我的jsp页面是/WEB-INF/jsp/user/registration.jsp。在我请求user/registration之后,jsp页面就没有任何修饰。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-16 04:53:58

将模式更改为

代码语言:javascript
复制
<pattern>/*</pattern>

模式中的路径再次匹配--请求路径,而不是由RequestDispatcher#forward()使用视图名执行的内部InternalResourceViewResolver

但是,您可以使SiteMeshFilter只在forward请求上工作,使用

代码语言:javascript
复制
<filter-mapping>
    <filter-name>sitemesh</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23098555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档