2016-12-15 33 views
0

my @RestControllerが受け取る必要があるパラメータと同じ数の属性を含むDTOオブジェクトを作成しました。それらのいくつかは必須であり、他のものはそうではありません。Spring MVC 4 @RequestParam DTO必須属性

次のようにコントローラのメソッドが見えます:

@RequestMapping(path = "/endpoint_url", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) 
public List<ReturnDTO> endpoint(@RequestParam(required = false) FilterDTO filter) { ... } 

私はそれが@RequestParam(=真必須)アノテーションで行うのようFilterDTOのいくつかは同様に必須属性を作成するどのような方法があるかどうかを知りたいです。

私はjavax.validation.constraints.NotNullから@NotNull注釈を試みたが、動作するようには思えません。

どのようなご意見もありがとうございます!

+1

https://sdqali.in/blog/2015/12/04/validating-requestparams-and-pathvariables-in-spring-mvc/ –

+1

'@ RequestParam'を使用しないでください'リクエスト属性をオブジェクトにバインドする場合は、@ ModelAttributeを使用します。 '@ Valid'を追加し、' @ NotNull'または '@ NotEmpty'をdtoに必要なフィールドに置きます。 –

+0

このソリューションは魅力的に機能しました!ありがとう! – faguilera85

答えて

0

アイデアは、あなたはそれがですべての変数この

@RequestMapping(path = "/endpoint_url", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) 
public List<ReturnDTO> endpoint(@Validated @RequestParam FilterDTO filter){} 

ようになりますあなたの@RequestBodyオブジェクト でorg.springframework.validation.annotationから有効@Validatedかを@@使用する必要がありますということですFilterDTOは、あなたが彼らに

を@NotNull注釈を追加しない限り、それは、これは名前を意味

@NotNull 
private String name 

ようになりますオプションですNUすることはできませんまたは@例外をスローする

+1

GET呼び出しは@RequestBodyを持つことができません。 –

+0

正しいことを知らなかったことを固定:) – Hani

関連する問題