2016-12-15 632 views
0

我创建了一个DTO对象,其中包含与我的@RestController需要接收的参数一样多的属性。其中有些是强制性的,有些则不是。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的属性强制相似。

我已经试过@NotNull注释从javax.validation.constraints.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

的想法是,你将需要使用@Validated或@@从org.springframework.validation.annotation有效的使用您@RequestBody对象 所以它看起来像这样

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

然后在所有变量除非添加注释@NotNull向他们FilterDTO是可选

所以这将是为

@NotNull 
private String name 

这意味着名称不能是NU会抛出异常

+1

GET调用不能有@RequestBody。 –

+0

正确没有注意到固定:) – Hani