如何将对象从get控制器提交到post控制器?

时间:2013-09-04 12:01:43

标签: java spring jsp

如何在不使用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/";
}

有人有想法吗?感谢您的阅读

1 个答案:

答案 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