如何在不使用jsp端的输入字段的情况下将对象从get控制器传输到post控制器?
@RequestMapping(value = "/benutzerverwaltung/{benutzerID}/kennwort", method = RequestMethod.GET)
public String BenutzerverwaltungKennwort(@PathVariable("benutzerID")int id, @ModelAttribute("benutzer") CBenutzer benutzer, Model model){
benutzer.getBenutzer(id);
benutzer.setPasswort(null);
//code to transmit?
return "benutzerverwaltung/kennwort";
}
和第二个应该得到对象benutzer的控制器
@RequestMapping(value = "/benutzerverwaltung/{benutzerID}/kennwort/aendern", method = RequestMethod.POST)
public String BenutzerverwaltungKennwortGo(@PathVariable("benutzerID")int id, @ModelAttribute("benutzer") CBenutzer benutzer, Model model){
//here I need the object with its attributes from the controller above...
System.out.println(benutzer.toString()); //what i get is attributes = null -.-
return "redirect:/benutzerverwaltung/";
}
有人有想法吗?感谢您的阅读
答案 0 :(得分:1)
您需要使用HttpSession
属性或Flash属性(无论如何都使用HttpSession
)。要使用flash属性,Spring可以使用RedirectAttributes
类。在你的GET处理程序
@RequestMapping(value = "/benutzerverwaltung/{benutzerID}/kennwort", method = RequestMethod.GET)
public String BenutzerverwaltungKennwort(@PathVariable("benutzerID")int id, @ModelAttribute("benutzer") CBenutzer benutzer, Model model, RedirectAttributes redirectAttrs){
benutzer.getBenutzer(id);
benutzer.setPasswort(null);
redirectAttrs.addFlashAttribute("benutzer", benutzer);
return "benutzerverwaltung/kennwort";
}
来自javadoc:
重定向后,flash属性会自动添加到 提供目标URL的控制器模型。
即使您没有执行重定向,也是如此。在下一个请求中。
请注意,这些闪光属性仅在您下次发出请求时可用(闪光!)。如果您不确定下一个请求是否是您需要的POST,则应将对象直接保存在HttpSession
。