客户端单击链接时如何更改返回的URL

时间:2011-05-16 15:35:03

标签: spring-mvc

我有一个案例,我有一个列出所有项目的列表页面,每个项目都有一个删除链接。用户可以单击此链接删除此项,这是删除链接格式:http://localhost:8080/list.htm?op=del&id=1234

当用户点击删除链接时,它将返回列表页面。但是这有一个问题,当用户刷新页面时,它将再次调用删除操作,这将导致错误。那么当服务器端设置响应时,如何更改URL?我希望链接仍然存在 http://localhost:8080/list.htm

由于 顺便说一句,我正在使用Spring MVC

杰夫张

3 个答案:

答案 0 :(得分:0)

我能想到的一个简单方法是将删除代码放在一个单独的页面上,
然后再次将用户重定向到列表页面。 我对Spring MVC了解不多,但看起来你正在使用PHP删除它,
判断?在URL中。 (或者可能不是.htm,但无论如何) PHP中的重定向将是
<?php

header( 'Location: list.htm' ) ;

?>

假设list.htm与新删除页面位于同一目录中。 所以有一个基本的想法,无论你是否使用PHP取决于你,我不知道你的代码的其余部分是什么样的,所以我无法帮助更多。

答案 1 :(得分:0)

假设您没有返回删除操作的任何数据,只需返回一个HTTP 303响应,并将Location头设置为'list.htm'。或者,您可以在收到响应后通过客户端上的JavaScript执行此操作:

window.location = '/list.htm'

但是,我建议使用单独的端点进行删除。使用名为list的端点删除对象没有意义;相反,链接应该命中一个端点,例如delete.htm?id = 1234(然后可以发送303重定向回list.htm)。

答案 2 :(得分:0)

解决问题的模式称为Post/Redirect/Get。在接收并处理POST(或者如果您愿意的话,删除)之后,您希望向客户端发送HTTP重定向,以便他们的浏览器使用GET请求加载列表页面。

如果您使用的是标准的UrlBasedViewResolver,则可以执行以下操作:

return "redirect:your-list-view";

请查看Spring文档的15.5.3部分以获取更多信息。