Spring MVC 4 @RequestParam DTO强制属性

时间:2016-12-15 17:17:30

标签: java spring spring-mvc servlets

我创建了一个DTO对象,其中包含与@RestController需要接收的参数一样多的属性。其中一些是强制性的,另一些则不是。

控制器方法如下所示:

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

我想知道是否有任何方法可以使某些FilterDTO属性与 @RequestParam(required = true)注释完全相同。

我已经尝试了 javax.validation.constraints.NotNull 中的 @NotNull 注释,但它似乎无效。

非常感谢任何想法!

1 个答案:

答案 0 :(得分:1)

您的想法是,您需要在@RequestBody对象中使用org.springframework.validation.annotation中的@Validated或@Valid 所以它看起来像这样

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

然后FilterDTO中的所有变量都是可选的,除非你向它们添加@NotNull注释

所以它将是

@NotNull
private String name

此平均名称不能为null或将抛出异常