Spring MVC导航路径

时间:2012-05-30 08:18:32

标签: java spring spring-mvc

尝试在spring 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。但是如果我在这个页面,并且从这个页面我想要在单击操作链接时到达operation.htm,路径就像这样:http://localhost/obia/secure/secure/operation.htm

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

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:5)

如果您使用的是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

后更改网址

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

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