2

私のUserController.java

@Controller
@RequestMapping("/userRegistration")
public class UserController{

    @RequestMapping(method = RequestMethod.GET)
    public String showForm(ModelMap model) {
        User user = new User();
        model.addAttribute(user);
        return "userForm";
    }

@RequestMapping(method = RequestMethod.POST)
public String onFormSubmit(@ModelAttribute("user") User user) {   // **#1**
    return "redirect:userSuccess.htm";                // **#2**
    }

}

私のSuccessController.java

@Controller
public class SuccessController {

    @RequestMapping("/userSuccess.htm")
    public String getSuccessPage(@ModelAttribute("user") User user){       // **#3**
        return "userSuccess";
    }
}

"user"モデルが入っていないSuccessControllerので、で使う${user.name}userSuccess.jsp何の価値もありません。

1行目にユーザーモデルを設定すると、別のコントローラーでこの値を取得しないのはなぜですか?を使用してこのモデルをSessionに保持@SessionAttributesすると、別のコントローラーでアクセスできます。

それでは、を使用して形成されたモデルの範囲は何@ModelAttributeですか?

4

1 に答える 1

3

ここで説明さ@SessionAttributesれているようにで変更されない限り、リクエストに含まれています。(ここで説明されている他のケースをデルタ化します。)リダイレクトを実行しています。要求属性は失われます。それは新しいリクエストです。

あなたはあなたのテキストであなた自身の質問に答えました:それをセッションに保つとき、それはセッションにあるので、それはコントローラーとリダイレクトを越えて利用可能です。あなたがそれをセッションに保持しなければ、そうではありません。

于 2011-12-27T13:50:36.787 に答える