spring-mvc - Sitemesh 不修饰返回的 View

标签 spring-mvc sitemesh

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

我希望sitemesh只装饰.jsp页,但是当 Controller 返回一个 View 时,它没有被修饰。

这是我的 web.xml 的一部分:

  <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 :
<?xml version="1.0" encoding="UTF-8"?>    
<decorators>
    <decorator name="basicLayout" page="/WEB-INF/decorators/base_layout.jsp">
        <pattern>*.jsp</pattern>
    </decorator>
</decorators>

我用 InternalResourceViewResolver将我的 View 从逻辑名称解析为实际路径:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
    p:viewClass="org.springframework.web.servlet.view.JstlView"
    p:prefix="/WEB-INF/jsp/"
    p:suffix=".jsp" />

这是我的 Controller :
@Controller
public class UserController {
    @RequestMapping("/user/registration")
    public String registrationForm() {
        return "user/registration";
    }   
}

我的 jsp页面是/WEB-INF/jsp/user/registration.jsp .我请求后 user/registration ,那个jsp页面没有任何装饰。

最佳答案

将您的模式更改为

<pattern>/*</pattern>

模式中的路径再次匹配请求路径,而不是内部 RequestDispatcher#forward()InternalResourceViewResolver 完成 View 名称.

您可以制作您的 SiteMeshFilter仅适用于 forward请求虽然
<filter-mapping>
    <filter-name>sitemesh</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

关于spring-mvc - Sitemesh 不修饰返回的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23098555/

相关文章:

java - 如何在 entitymanager createNativeMethod 中回滚

java - Sitemesh 2.4 版本是否已损坏?

model-view-controller - 从 Grails 中的布局 View 访问模型

java - 使用 jsp 和 sitemesh 的高级模板

java - sitemesh 装饰器中的 Spring 安全标签

java - 有没有办法将 Spring 3.0 MVC @RequestParam 直接映射到 Java Bean?

java - 如何使用 Spring MVC 处理未知数量的参数

java - MVC REST API 中使用 Jackson 的动态 JSON 类型

java - 服务器发送事件 + Java 与 Spring MVC

grails - Grails sitemesh是否有不支持带有开放HTML正文标签的语句的解决方法?