gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 03:50:46 35 4
gpt4 key购买 nike

我有咨询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/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com