我有一个表单,使用POST方法提交用户的名字和姓氏,该表单位于signin.html页面。
@RequestMapping(value="/signin.html",method = RequestMethod.POST)
public ModelAndView submit(@Valid User user){
ModelAndView mv = new ModelAndView("redirect:signin.html");
//Business logic with user account
return mv;
}
为了解决双重提交问题,我正在使用GET请求将重定向指向相同的映射路由。 @RequestMapping(value="/signin.html",method = RequestMethod.GET)
public ModelAndView submitPRG(){
ModelAndView mv = new ModelAndView("submitted");
mv.addObject("message", "Submitted Correctly");
return mv;
}
我这样解决了双重提交的问题。
我有几个问题:
1)怎样才能知道 /signin.html 上的 GET 请求是来自重定向而不是用户在浏览器中请求的呢?我只想关闭用户浏览 http://server/signin.html 并获取 "已成功提交" 信息的选项。 我知道我可以添加类似 /signin.html?submitted=true 的东西,但我想让它更加清晰。
2)有没有办法从 submit()
将 ModelAndView
对象传递给 submitPRG()
?
或者说,在这种情况下还有其他使用 PRG 的方法吗?