0

spring mvc 3 の学習を始めたばかりです。コントローラーが投稿要求 (登録フォーム) を処理する小さな問題を見つけました。しかし、アドレスバーにマッピング値 (bla3/save.html) を入力すると、実行すべきではないメソッドが実行されます。そのため、誰かがアドレスを直接入力した場合、新しいユーザーを追加しようとする代わりに、他のページにリダイレクトする必要があります。

@RequestMapping(value = "/save", method = RequestMethod.POST) //save new user
public ModelAndView saveUser(@ModelAttribute("user") User user, BindingResult result){
    userService.addUser(user);  
    return new ModelAndView("redirect:/users.html");
}
4

3 に答える 3

3

アドレス バーに直接 URL がある場合、別の動作を処理できる GET 要求になります。たとえば、この URL では GET が禁止されているか、送信時に POST メソッドが呼び出されるユーザーに対して空白のフォームをレンダリングします。その上。

@RequestMapping(value = "/save", method = RequestMethod.GET)
public ModelAndView saveUser(@ModelAttribute("user") User user, BindingResult result){
    userService.addUser(user);  

}
于 2012-11-14T07:08:58.250 に答える
1

Add this method in your controller class.

@RequestMapping(value = "bla3/save", method = RequestMethod.GET)
public ModelAndView saveUser(@ModelAttribute("user") User user, BindingResult result){
    userService.addUser(user);  
...
return new ModelAndView("redirect:/users.html");
}

If type the mapping value (bla3/save.html) in address bar. This method will execute.

于 2012-11-14T11:19:38.570 に答える
0

以下のコードのような特定のヘッダーがある場合にのみメソッドを実行させることができます。

 @RequestMapping(value = "/save", method = RequestMethod.POST, headers="X-Requested-With=XMLHttpRequest")

この場合、メソッドは jquery ajax リクエストの場合にのみ実行されます (jQuery は自動的にヘッダーを追加します)。

もちろんただのポカヨケです

于 2012-11-14T06:52:36.103 に答える