2017-01-06 14 views
1

私は春にAPIを構築しています。すぐに質問があります。Springで@RequestParamを反復処理する方法は?

これらのパラメータをチェックして値が入っているかどうかを確認してから、ロジックを実行します。

私は春が初めてです。これらの値を何らかのデータ構造に「取得」してチェックを行うことができますか?

 @RequestParam(value = "video") MultipartFile video, 
     @RequestParam(value = "pictureOne") MultipartFile pictureOne, 
     @RequestParam(value = "pictureTwo") MultipartFile pictureTwo, 
     @RequestParam(value = "pictureThree") MultipartFile pictureThree, 
     @RequestParam(value = "pictureFour", required = false) MultipartFile pictureFour, 
     @RequestParam(value = "pictureFive", required = false) MultipartFile pictureFive, 
     @RequestParam(value = "pictureSix", required = false) MultipartFile pictureSix, 
     @RequestParam(value = "pictureSeven", required = false) MultipartFile pictureSeven, 
     @RequestParam(value = "pictureEight", required = false) MultipartFile pictureEight, 
     @RequestParam(value = "pictureNine", required = false) MultipartFile pictureNine, 
     @RequestParam(value = "pictureTen", required = false) MultipartFile pictureTen) 
+2

私はあなたの基本的なアプローチに疑問を呈しています。なぜ、11個のファイルに対してフォームアップロードを同時に使用していますか? – chrylis

+1

あなたの質問には答えられませんが、もっと良い解決策は画像をアレイとして送ることです。 '@RequestParam(value =" pictures [] ")MultipartFile [] pictures' – mbridges

+0

何もなければ、配列を作成します:' for(MultipartFile file:new MultipartFile [] {video、pictureOne、pictureTwo、pictureThree、pictureFour 、pictureFive、pictureSix、pictureSeven、pictureEight、pictureNine、pictureTen}){/ *ここにコードする* /} 'かわいいですが、それは動作します。 – Andreas

答えて

1

あなたはこのすべての値に対して検証を実行し、構造体にそれを閉じたい場合は、私はDTOオブジェクトを作成し、フィールド、元のようにすべての変数を置くことをお勧めします。あなたのコントローラで

public class FilesDto{ 
    private MultipartFile video; 
    private MultipartFile photos[]; 
} 
//Getters setters... 

その後

@Autowired 
private SomeValidator someValidator; 

@RequestMapping(method = RequestMethod.POST) 
public void savePhotos(@Valid FilesDto filesDto) { 
    .... 
} 

@InitBinder("filesDto") 
protected void initBinde(WebDataBinder binder) { 
    binder.setValidator(someValidator); 
} 

someValidatorは、Validatorインターフェイスを実装するクラスです。 コメントの@mbridgesによると、すべてのパラメータをリストする代わりに、配列を使うことを強くお勧めします。

+1

こんにちは、ありがとうございました。@ mbridgesのアプローチに従って、これを稼働させることができました。はるかにクリーンなコード!ご協力いただきありがとうございます。 – xn139

関連する問題