Java 如何根据@RequestParam重定向到新页面
我正在Java 如何根据@RequestParam重定向到新页面,java,spring,Java,Spring,我正在/messages/new上显示视图newMessage.jsp。新消息成功发送后,我想将用户重定向到他来自的页面。这可能会有很多页面,因为我的许多视图(收件箱、投诉页面等)中都嵌入了我的新邮件链接 实验#1 我尝试了return“redirect:+request.getHeader(“Referer”),但不起作用。原因是,每次用户单击“提交”,我都会将他发送到同一个url(/messages/new),因此在他单击“提交”后,Referer标题会设置为/messages/new 实验
/messages/new
上显示视图newMessage.jsp
。新消息成功发送后,我想将用户重定向到他来自的页面。这可能会有很多页面,因为我的许多视图(收件箱、投诉页面等)中都嵌入了我的新邮件链接
实验#1
我尝试了return“redirect:+request.getHeader(“Referer”)
,但不起作用。原因是,每次用户单击“提交”,我都会将他发送到同一个url(/messages/new
),因此在他单击“提交”后,Referer
标题会设置为/messages/new
实验#2
然后我尝试设置一个@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),当我最终(成功发送消息后)执行
返回“重定向”:+my_domain_name+referer
在控制器中,请求以旧值referer
传递,结果URL是my\u domain\u name/referer?referer=value\u from\u previous\u call
,而它应该是my\u domain\u name/referer${referer}
引用名为referer的请求属性,而您将其作为请求参数传递
除非手动将该参数存储为属性,否则需要使用以下内容:${param.referer}
这可能不太好。但是,我们可以判断referer
是否有价值:
1:referer
实际上有一个值,然后做第三个实验
2:有点复杂,那么你必须检查referer
中的值,如果没有设置,那么设置一个,你应该有一个默认页面,当referer
为空时,可能是/messages/inbox
,最后需要通过临时重定向(301)或元标记刷新页面。好的,唯一明显的解决办法是:
do返回“重定向”:+referer代码>从控制器,它将页面重定向到调用/messages/new
的任何位置。我现在面临的问题是,在成功发送消息后,当我返回“重定向”:+域\地址+引用
在我的控制器中,请求是通过referer传递的,也就是说,结果URL是域名/referer?referer=referer\u值\u,来自上一次调用
我希望它只是域名/referer
谢谢,但我决定使用(3),现在有一个新问题。也许做点小小的调整就可以了。请参阅我的编辑您可以忽略引用器,或者在发送消息操作中实际删除它,这样referer
将独立运行,它毕竟是一个简单的if(!something.equals(pathToSend)){//do something}