我有一个像这样的对象:
public class Foo {
public interface FooValidator{};
@Null(groups = {FooValidator.class}, message = "Id is null!!!")
private Integer id;
@NotEmpty(message = "Description is empty")
private String description;
}
和类似的控制器:
public class FooController {
@PutMapping(value = "/{actionItemId}")
public ResponseEntity bar1(@Validated({Foo.FooValidator.class}) @RequestBody Foo foo) {
//stuff
}
@PostMapping
public ResponseEntity bar2(@Validated @RequestBody Foo foo) {
//stuff
}
}
我的问题是使用bar1
方法,它只验证id
字段,而不验证描述字段。但是bar2
方法可以正常工作,它可以验证描述字段而不是id字段。
如何获取spring的@Validated
批注以验证具有适当接口批注和所有其他普通字段(没有注释的字段)的字段。
换句话说,我如何获得bar1
方法来同时验证id
和description
字段?
答案 0 :(得分:6)
@Validated
批注应在课程级别使用。用来说在类内部进行了一些验证。这意味着它可以与其他验证批注一起使用,这些批注将应用于属性,参数等。我正在发布documentation中的示例:
@Service
@Validated
public class MyBean {
public Archive findByCodeAndAuthor(@Size(min = 8, max = 10) String code,
Author author) {
...
}
}
如果要验证自定义类,如在示例中对我看来,则应使用@Valid
annotation,它将对类的属性应用验证。