Spring MVC类与方法映射并存时视图路径错误问题求助
问题解决:Spring MVC视图路径拼接错误
问题根源
错误路径/role/WEB-INF/view/role-overview.jsp的产生,是因为视图解析器的前缀配置为相对路径,再结合控制器类上的@RequestMapping("/role"),Spring MVC会基于当前请求路径(/role/roles)拼接视图路径,最终偏离了正确的文件位置。
解决方案
方案1:修正视图解析器的前缀为绝对路径
给视图解析器的prefix参数添加开头斜杠,让它从应用根目录开始定位视图文件:
@Bean public InternalResourceViewResolver viewResolver() { InternalResourceViewResolver vr=new InternalResourceViewResolver(); vr.setPrefix("/WEB-INF/view/"); // 添加开头斜杠,改为绝对路径前缀 vr.setSuffix(".jsp"); return vr; }
方案2:返回视图名时使用绝对路径
如果不想修改视图解析器配置,可以在控制器方法返回视图名时,给视图名添加开头斜杠,强制从根路径解析:
return "/role-overview"; // 添加开头斜杠,指定绝对视图路径
额外优化:修正页面跳转路径
你页面中a标签使用的相对路径role/roles,若home.jsp不在应用根目录下可能引发跳转错误。推荐改为适配上下文的绝对路径:
<!-- 使用JSTL标签自动适配应用上下文路径 --> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <a href="<c:url value='/role/roles'/>" class="text-light"> <div style="height:50px;font-size:30px;" class="container mb-1 col-4 bg-info text-center "> <p>Role Overview</p> </div> </a>
内容的提问来源于stack exchange,提问作者Rtech tricks
相关产品推荐
相关产品推荐

