Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何根据@RequestParam重定向到新页面_Java_Spring - Fatal编程技术网

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}