You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot使用ModelAndView响应Ajax请求后未跳转新页面问题排查

问题原因及解决方案

1. 视图路径匹配错误

你的控制器中设置视图名时加了前缀斜杠/newPage,Spring Boot默认的视图解析器(如Thymeleaf、Freemarker)拼接模板路径时,会在配置的前缀(默认classpath:/templates/)后直接拼接你写的视图名,再加后缀(默认.html),最终拼接出的路径为classpath:/templates//newPage.html,多了一层斜杠导致无法找到对应的模板文件。
修复方法:将视图名改为mav.setViewName("newPage");去掉前缀斜杠即可。

2. Ajax请求逻辑与需求不匹配

你当前的需求是跳转到新页面,用Ajax请求完全不符合这个场景:

  • 你在success回调里将返回的HTML直接替换当前页面的<body>内容,如果newPage.html是包含<html>、<head>的完整HTML文档,嵌套到当前页面的body中会导致DOM结构完全错乱,无法正常渲染。
  • 如果你确实需要整页跳转,完全不需要用Ajax发起请求,直接用浏览器原生跳转即可。
    修复方法:将JS的Ajax请求逻辑替换为页面跳转即可:
function open() {
    var table = $('#dataList').DataTable();
    $('#dataList tbody').on('click', 'tr', function() {
        ligneSel = table.row(this).data();
        var id =  ligneSel[0];
        // 直接跳转页面即可
        window.location.href = './openNewPage?id=' + id;
    });
}

3. 可选验证步骤

你可以先直接在浏览器地址栏输入http://你的服务地址/openNewPage?id=测试id,验证后端接口是否能正常返回页面:

  • 如果地址栏直接访问也看不到页面,说明是后端视图配置问题,检查模板文件是否放在resources/templates目录下,文件名是否为newPage.html
  • 如果地址栏访问正常,说明是前端逻辑问题,按上面的方法修改跳转逻辑即可。

内容的提问来源于stack exchange,提问作者Luciana Oliveira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:27:03