Grails 3.3.9项目跳转JSP页面返回404错误如何解决
Grails 3.3.9本身完全支持JSP跳转,问题大概率出在路径配置和JSP存放位置不符合规范,可按以下顺序排查:
1. 确认JSP相关依赖已引入
检查项目build.gradle配置中是否存在以下依赖,缺失的话补全后重新构建项目:
compile "org.grails:grails-plugin-jsp" compile "javax.servlet:jstl:1.2"
2. 修正JSP文件存放路径
Grails 3的Web资源默认从src/main/webapp目录加载,你当前把JSP放在src/main/resources下属于类路径资源目录,不会被Web容器识别为可直接跳转的前端页面资源。
正确存放规则:
所有JSP文件统一放在src/main/webapp/WEB-INF/jsp/目录下,可按业务路径新建子目录,比如你的Entrada.jsp可以放到src/main/webapp/WEB-INF/jsp/es/salenda/test/Entrada.jsp。
3. 修正跳转路径写法
request.getRequestDispatcher()接收的是Web应用上下文相对路径,不是本地开发环境的源码文件系统路径,绝对不能写src/开头的路径。
修正后的跳转代码:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... request.getRequestDispatcher("/WEB-INF/jsp/es/salenda/test/Entrada.jsp").forward(request, response); }
路径开头的/代表从Web应用根路径开始寻址,不需要拼接业务前缀。
4. 快速验证方案
如果还是排查不出问题,可以做最简测试:把Entrada.jsp直接放到src/main/webapp根目录,跳转路径写/Entrada.jsp,如果能正常访问就说明是之前的目录结构和路径写法问题,再逐步调整到你需要的业务目录即可。
内容的提问来源于stack exchange,提问作者Alberto Barón
相关产品推荐
相关产品推荐

