在开发过程中大家肯定都会校验前端传递参数,比如是否为空,长度等等
今天就在这里对java bean的参数校验做一个深入的使用,相信如果服务端提供的接口请求类型Content-type如果是json的接口,就会存在一个复杂json的一个校验问题,下面举一个例子:
{
"name":"测试活动123",
"phone":"123",
"address":{
"province":"省",
"city":"市"
}
}对于这种的json我想要校验province和city是否为空,你在各自的bean里面定义@NotBlank这样是没有用的,错误例子:
public class UserParam {
private String name;
@NotBlank(message = "phone不能为空")
private String phone;
@NotBlank(message = "address不能为空")
private Address address;
...getsetpublic class Address{
@NotBlank
private String province;
@NotBlank
private String city;
...getsetcontroller层
public String test(@Valid @RequestBody UserParam param){
...
}接下来来分析下问题,我们先看下@Valid这个注解,注意他是可以放到FIELD上的,这就是嵌套的bean的重点
@Target({ METHOD, FIELD, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) public @interface Valid { }
下面正确嵌套bean校验的做法,只需要在UserParam类中的Address上加@Valid注解就可以解决类,如下:
public class UserParam {
private String name;
@NotBlank(message = "address不能为空")
private String phone;
@Valid
private Address address;
...getsetok问题解决了。。。 版权声明:本文为w15868676598原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。