Spring-MVC控制器重定向至“上一页”页面?

2022-09-01 10:23:15

假设我有一个用于编辑 Pony 属性的表单,在我的 Web 应用程序中,有多个位置可以选择编辑 Pony。例如,在小马列表中,每个小马旁边可能有一个“编辑”链接,当用户查看小马时,该视图中也可能有一个“编辑”链接。

当用户在编辑小马后单击“提交”时,我想将用户返回到他或她单击“编辑”链接时所在的页面。

如何编写控制器以将用户重定向回他们开始的位置?当然,我可以通过向控制器传递参数来做到这一点,但这似乎有点愚蠢。我是否认为这一切都是错误的,或者这几乎是我必须做的?


答案 1

这是如何做到这一点男孩(请注意,这是RESTful Spring 3 MVC语法,但它可以在较旧的Spring控制器中工作):

@RequestMapping(value = "/rate", method = RequestMethod.POST)
public String rateHandler(HttpServletRequest request) {
    //your controller code
    String referer = request.getHeader("Referer");
    return "redirect:"+ referer;
}

答案 2

当然,一种选择是在新窗口中打开编辑表单,因此用户所要做的就是关闭它,然后他们又回到了原来的位置。

在我当前的应用程序中,有几个地方我需要做一些复杂的事情,然后将用户传递到一个表单,然后让他们回到起点。在这些情况下,我会在传递它们之前将起点存储在会话中。对于你正在做的事情来说,这可能有点过分了。

其他选项:1)您可以存储“Referer”标头并使用它,但这可能不可靠;并非所有浏览器都设置了该标头。2)您可以在表单提交后在确认页面上使用javascript,该表单提交调用“”。history.go(-2)


推荐