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

简易Web应用跳转路径错误:如何修复按钮跳转至错误页面?

修复Web应用跳转路径错误的方案

这个问题是相对路径解析规则导致的:当你使用href="dashboard"这种相对路径时,浏览器会根据当前页面的URL来决定跳转目标:

  • 在mywebSite.com/user(URL末尾无斜杠)页面,浏览器会把dashboard解析为替换当前路径的最后一段,也就是跳转到mywebSite.com/dashboard,刚好符合你的预期;
  • 但在mywebSite.com/user/John(URL属于层级路径,末尾隐含斜杠)页面,浏览器会把dashboard当成当前路径的子路径,所以错误跳转到mywebSite.com/user/dashboard。

下面是几种靠谱的修复方案:

方案1:使用根路径开头的绝对路径

直接把跳转链接的href改成以斜杠开头的绝对路径,这样不管当前在哪个页面,都会从网站根目录开始解析:

<a class="btn btn-primary mt-5 btn-rounded btn-lg" href="/dashboard">返回首页</a>

这是最简单直接的解决方法,适合大部分场景。

方案2:使用Spring MVC的<c:url>标签生成正确URL

如果你的应用部署时有上下文路径(比如部署在mywebSite.com/myapp/下),硬写斜杠开头的路径可能会出问题。这种情况下推荐用Spring的JSTL标签来动态生成URL:

  1. 先在JSP页面顶部引入JSTL核心标签库:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  1. 然后用<c:url>标签生成跳转链接:
<a class="btn btn-primary mt-5 btn-rounded btn-lg" href="<c:url value='/dashboard'/>">返回首页</a>

这个标签会自动帮你拼接上下文路径,确保跳转始终指向正确的控制器路由。

方案3:在控制器中添加跳转逻辑(可选)

如果你希望通过后端控制跳转,可以在用户相关的控制器中添加一个返回首页的方法,然后让按钮提交到这个方法:

@RequestMapping("/goToDashboard")
public String goToDashboard() {
    return "redirect:/dashboard";
}

然后前端链接改成:

<a class="btn btn-primary mt-5 btn-rounded btn-lg" href="/goToDashboard">返回首页</a>

这种方式适合需要在跳转前做一些业务逻辑处理的场景,不过单纯跳转的话有点多余。

总结:优先用方案1或方案2,前者简单,后者更灵活适配不同部署环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:13:21