У меня есть форма, которая отправляет имя и фамилию пользователя с помощью 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) Как я могу узнать, что запрос GET на /signin.html исходит от перенаправления и не был запрошен пользователем в браузере? Я просто хотел бы закрыть возможность для пользователя просматривать http://server/signin.html и получать "Отправлено Сообщение «Правильно». Я знаю, что могу добавить что-то вроде /signin.html?submitted=true, но я хотел бы сделать его более чистым.
2) есть ли способ передать объект ModelAndView
из submit()
в submitPRG()
?
Или просто есть ли другой способ использовать PRG в этом случае?