0

尝试在 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

4 回答 4

5

您的链接是相对的。在它们前面添加一个斜线将解决它。

于 2012-05-30T08:21:45.387 回答
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您生成。

于 2012-05-30T08:33:45.653 回答
2

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

 
       <a href="/obia/secure/operation.htm">操作</a>
       <a href="/obia/secure/configuration.htm">配置</a>
    

于 2012-05-30T08:26:32.837 回答
0

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

于 2012-05-30T16:40:55.097 回答