我正在显示视图newMessage.jsp
。/messages/new
成功发送新消息后,我想将用户重定向到他来自的页面。这可能是很多页面,因为我的很多视图(收件箱、投诉页面等)中都嵌入了我的新消息链接。
实验#1
我试过return "redirect:" + request.getHeader("Referer")
了,但它不起作用。原因是,每次用户单击提交时,我都会将他发送到相同的 url ( /messages/new
),因此在他单击“提交”后,Referer
标题会设置为/messages/new
实验#2
然后我尝试设置 a @RequestParam
(这似乎是正确的做法)。因此,我会/messages/new?referer=/inbox
在收件箱视图、/messages/new?referer=/complaints
投诉视图等中调用。但是同样,当用户单击“提交”时,action="new"
会触发并且我丢失了referer
我传递的参数。
实验#3
最后,我决定action="new"
将action="new?referer=${referer}"
. 这工作得很好,除了当referer
它为空时,url 将是/messages/new?referer=
,这看起来不太漂亮。
实验#4
即使我使用(3),当我最终(成功发送消息后)return "redirect:" + my_domain_name + referer ;
在控制器中执行时,请求正在以旧值传递,referer
并且生成的 URLmy_domain_name/referer?referer=value_from_previous_call
应该只是my_domain_name/referer