如何管理Spring MVC上的错误URL?

时间:2011-02-17 18:09:15

标签: java spring-mvc url-routing

我有一个带有Spring MVC 3.0.4.RELEASE的webapp。

我有以下情况:

1)我通过GET进入搜索网页,路径为:search.html
2)我点击搜索并对路径进行POST:searchResults.hmtl
3)当我点击搜索结果时,我会对searchResults / enterResult.html执行POST 4)假设控制器引发异常......
5)我需要使用之前的搜索返回searchResults.html页面。

我无法使用forward,因为它维护路径searchResults / enterResults.html,所以如果我点击搜索结果,它会构建以下不存在的路径:searchResults / searchResults / enterResults.html

你知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

如果发生错误,为什么不进行redirect:searchResults.html而不是转发呢?如果要将错误消息发回以显示在该页面中,可以将它们添加为参数,如下所示:redirect:searchResults.html?error_message=yada

顺便说一句,如果您在构建搜索结果表单操作时避免使用相对URL,那么首先不应该出现searchResults/searchResults/enterResults.html问题。看起来您正在enterResults.html而不是/your-app/searchResults/enterResults.html进行POST。如果您解决此问题,则无需像上面提到的那样执行重定向。

我在这里想说的是:

......而不是这样做......

<form action="enterResults.html" method="POST">
    ...
</form>

......做这个......

<form action="${pageContext.request.contextPath}/searchResults/enterResults.html" method="POST">
    ...
</form>

这样,转发的URL是否保留以前的URL并不重要。您将始终POST到正确的操作。