我创建了一个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 注释,但它似乎无效。
非常感谢任何想法!
答案 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或将抛出异常