春季 MVC 导航路径



我在尝试在春季 mvc 中进行一些简单的导航时遇到了问题。我有一个导航控制器:

@Controller
@RequestMapping("/secure")
public class NavigationController {
    @RequestMapping("/operation")
    public String processOperationPage() {
        //Some logic goes here
        return "corpus/operation";
    }
    @RequestMapping("/configuration")
    public String processConfigurationPage() {
        //Some logic goes here
        return "corpus/configuration";
    }
}

有我的链接可以到达该控制器:

<a href="secure/operation.htm">Operation</a>
<a href="secure/configuration.htm">Configuration</a>

第一次单击链接时,一切正常。在浏览器中,我看到了预期的正常路径。例如:http://localhost/obia/secure/configuration.htm .但是,如果我在此页面上,并且从此页面我想到达操作.htm则当我单击操作链接时,路径将变为如下所示:http://localhost/obia/secure/secure/operation.htm

secure出现两次。如何解决这个问题?

您的链接是相对的。 在他们面前添加一个斜杠将修复它。

如果您使用的是 JSP,请改用 JSTL

<c:url value="/secure/operation.htm" />

请记住在 JSP 文件中包含 taglib:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

通过使用 JSTL,可以避免在将应用部署到不同的上下文(如http://host/http://host/myapp)后更改 URL

第一个将生成http://host/secure/operation.htm第二个将为您生成http://host/myapp/secure/operation.htm

从相对网址更改网址,或根据当前页面动态计算相对网址。 例如,您可以将 URL 更改为基于主机的:

      Operation
      Configuration
    

上面的响应者在使用c:url生成绝对URL时有一个正确的答案。 但是,在某些情况下,由于防火墙配置,JSTL 无法正确知道 URL 库。 在这种情况下,您可以使用相对 URL,但它必须知道您从哪里开始。 即在页面 obia/secure/operation.htm 上,URL 将是 ../secure/configuration.htm,或只是配置.htm。 点点表示向上遍历一个级别。

最新更新