1

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 を取得する必要がある 2 番目のコントローラー

@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/";
}

誰かがアイデアを思いつきましたか?読んでくれてありがとう

4

1 に答える 1

1

HttpSession属性またはフラッシュ属性 (HttpSessionとにかく を使用)を使用する必要があります。フラッシュ属性を使用するために、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 から:

リダイレクト後、ターゲット URL を提供するコントローラーのモデルにフラッシュ属性が自動的に追加されます。

これは、リダイレクトを実行しなかった場合でも当てはまります。次のリクエストで。

これらのフラッシュ属性は、次に作成するリクエスト (フラッシュ!) でのみ使用できることに注意してください。次のリクエストが必要な POST かどうかわからない場合は、オブジェクトを直接HttpSession.

于 2013-09-04T12:30:10.640 に答える