2016-07-02 6 views
7

私はspring mvcアプリケーションを開発しています。私は自分のコントローラでマルチパートリクエストを処理したいと思います。リクエストで私は現在、私は上記のコード@RequestParamをmultipartfileに使用するのは正しい方法ですか?

@RequestMapping(method = RequestMethod.POST) 
public def save(
     @ModelAttribute @Valid Product product, 
     @RequestParam(value = "image", required = false) MultipartFile file) { 
    ..... 
} 

が私のサービスにうまく機能し、ファイルをサーバー側で取得され、この方法は次のようになり、ファイルparamaeterを取得するために@RequestParamを使用しています、またMultiPartFileを渡しています。今では、ファイルの場合に、@RequestParamの代わりに@RequestPart注釈を使用する必要があることを私は見ました。ファイルに@RequestParamを使用するのに間違っていますか?それとも、将来何らかのエラーが発生する可能性がありますか?

答えて

5

@RequestParamMultipartファイルを使用すると間違いはありません。

@RequestParam注釈も 同じメソッド引数の型を支持する方法引数と 「マルチパート/フォームデータ」リクエストの一部を関連付けるために使用することができます。主な違いは、 メソッドの引数がStringでない場合、@RequestParamは登録されたConverterまたはPropertyEditorを使用して の変換に依存しますが、@ RequestFartは要求部分の 'Content-Type'ヘッダーである を考慮してHttpMessageConvertersに依存します。 @RequestParamは名前値のフォームフィールドで使用する可能性があります。@RequestParamは となりますが、より複雑なコンテンツ(JSON、XMLなど)を含む部分では@RequestPartが となる可能性があります。

は、注釈の両方を使用することができますhttp://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestPart.html

1

を参照してください、しかし、あなたは彼らが内部で引数をどう解釈するかに基づいて、それらについてのあなたの選択を行うことができます。

Spring Docsの状態が非常に明確に両者の差:

主な違いは、メソッドの引数が文字列でない場合@RequestPartHttpMessageConvertersに依存しながら、@RequestParamが登録コンバータを介して型変換に依存しているかPropertyEditorということですリクエスト部の 'Content-Type'ヘッダーを考慮に入れます。 @RequestParaは名前と値のフォームフィールドで使用される可能性が高く、複雑なコンテンツ(JSON、XMLなど)を含む部分では@RequestPartが使用される可能性が高くなります。

関連する問題