我正在显示视图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