2011-12-28 9 views
4

春のドキュメントは言う:@RequestParamとは何ですか?それはどのように設定されますか?

はあなたのコントローラで メソッドのパラメータにリクエストパラメータをバインドする@RequestParamアノテーションを使用してください。

ソース: http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-requestparam

私の知る限り、リクエストパラメータは、リクエストメソッドがGETの場合、クエリ文字列から取得した変数です。これらは、要求メソッドがPOSTのときにフォーム値から取り出される変数でもあります。私は、request.getParameter( "key")メソッドを通して要求パラメータを表示する単純なJSPを使用してこれを検証しました。

しかし、@RequestParamはGETメソッドリクエストでのみ動作するようです。クエリ文字列からのみ値を取得できます。

これはドキュメントのバグですか?誰かが、@RequestParamが何のために使われているのか、何が使えないのか、どのように埋め込まれるのかを正確に記述した文書を引用してください。

POSTメソッドに@RequestParamを使用してフォーム値を取得できますか? @RequestParamを使用できない場合、他に何が使えますか?私はrequest.getParameter( "key")の呼び出しを避けようとしています。

答えて

6

これは投稿でも機能します。あなたのメソッドの本文とあなたのHTMLを投稿できますか?

+0

どのように私たちは、実際にカスタムタグを使用していた、この愚かさを説明することができます。私は "name"属性を使っていると思った。はい、それは動作します。 -_- – supertonsky

0

はいポスト方法でも完全に機能します。 @RequestParamのメソッド属性をRequestMethod=POSTと指定することができます。ここでは単一のフォームの値にバインドするコードスニペット

@RequestMapping(value="/register",method = RequestMethod.POST) 

public void doRegister 
(

    @RequestParam("fname") String firstName, 
    @RequestParam("lname")String lastName, 
    @RequestParam("email")String email, 
    @RequestParam("password")String password 
) 
0

代わりの@RequestParamは、あなたがオブジェクト全体に@ModelAttribute注釈やバインドを使用することができます。しかし、それはformまたはbind春のJSTLと一緒に使用する必要があります。

例: - :

@RequestMapping(value="/uploadForm", method=RequestMethod.GET) 

パブリック文字列showUploadForm(モデルモデル){

Artist artist = new Artist(); 
Track track = new Track(); 

model.addAttribute("artist", artist); 
model.addAttribute("track", track); 


return "uploadForm"; 

}

    JSPページをコールコントローラは、モデルにオブジェクトを追加する必要があります
  • JSPは次のよ​​うになります。

トラックタイトル*:フォームの送信を処理

  • コントローラ。

    @RequestMapping(値= "/ uploadToServer"、メソッド= RequestMethod.POST)

    パブリックストリングuploadToServer(@ModelAttribute( "アーティスト")アーティストアーティスト、@ModelAttribute( "トラック")トラックトラック){。 ...ここ}

私は@ModelAttributeアノテーションを使用しての良い説明を見つけた - krams915.blogspot.ca