重定向后重做原始请求 getRequestDispatcher
redo the original request after redirection getRequestDispatcher
嗨,
我有一个拦截所有请求的代码(GET & POST),并最终重定向到另一个页面,带有一个表单。
我希望当用户post表单时,执行初始截获的请求
我的实际代码:
public void doFilter(ServletRequest originalRequest, ServletResponse res, FilterChain chain){
originalRequest.getRequestDispatcher("/message").forward(request, res);
}
...
@RequestMapping("/message", method=GET)
public void showMessageForm(...){
...
}
@RequestMapping("/message", method=POST)
public void messageOk(ServletResponse res, ModelAndView mav){
//redirect to the originalRequest.
????
}
originalRequest可以是GET也可以是POST。如果是post,我也想把表格的内容也传过来。
谢谢!
您的 messageOk 方法将需要 return 一个页面,其中包含一个表单,该表单对于他们传递的每个字段都有隐藏字段 + 一个 Ok 按钮。所以像:
<form method="POST or GET" action="origin url">
<input type="hidden" name="param1" value="value for param1"/>
... for each input ...
<input type="hidden" name="paramN" value="value for paramN"/>
<input type=submit" value="Continue"/>
</form>
只要您没有正在上传文件的POST,这就应该有效。您可能希望在您的应用程序中考虑一个更简单的流程,例如仅当有人登录时才强制显示该页面。
嗨, 我有一个拦截所有请求的代码(GET & POST),并最终重定向到另一个页面,带有一个表单。 我希望当用户post表单时,执行初始截获的请求
我的实际代码:
public void doFilter(ServletRequest originalRequest, ServletResponse res, FilterChain chain){
originalRequest.getRequestDispatcher("/message").forward(request, res);
}
...
@RequestMapping("/message", method=GET)
public void showMessageForm(...){
...
}
@RequestMapping("/message", method=POST)
public void messageOk(ServletResponse res, ModelAndView mav){
//redirect to the originalRequest.
????
}
originalRequest可以是GET也可以是POST。如果是post,我也想把表格的内容也传过来。
谢谢!
您的 messageOk 方法将需要 return 一个页面,其中包含一个表单,该表单对于他们传递的每个字段都有隐藏字段 + 一个 Ok 按钮。所以像:
<form method="POST or GET" action="origin url">
<input type="hidden" name="param1" value="value for param1"/>
... for each input ...
<input type="hidden" name="paramN" value="value for paramN"/>
<input type=submit" value="Continue"/>
</form>
只要您没有正在上传文件的POST,这就应该有效。您可能希望在您的应用程序中考虑一个更简单的流程,例如仅当有人登录时才强制显示该页面。