我有一个案例,我有一个列出所有项目的列表页面,每个项目都有一个删除链接。用户可以单击此链接删除此项,这是删除链接格式:http://localhost:8080/list.htm?op=del&id=1234
当用户点击删除链接时,它将返回列表页面。但是这有一个问题,当用户刷新页面时,它将再次调用删除操作,这将导致错误。那么当服务器端设置响应时,如何更改URL?我希望链接仍然存在 http://localhost:8080/list.htm
由于 顺便说一句,我正在使用Spring MVC
杰夫张答案 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部分以获取更多信息。