分类
类别
我在父类中添加了注释。
但是在声明为另一个Object类型的成员变量中不起作用。它正在验证:
orderId
from基类referenceNumber
fromMarchantApplicationRequest
MerchantApplicationRequest
中customerRequests
字段的@NotEmpty
注释
但是没有在CustomerRequest
中验证customerRoleType
。
另外,我想在customerRequests
中添加@NotBlank
注释。但是它不接受这个,虽然它正在接受@NotEmpty
注释。
分类MerchantApplicationRequest
@JsonIngnoreProperties(ignoreUnknown=false)
public class MerchantApplicationRequest extends IomBaseDTO {
@NotEmpty(message="customerRequests is mandatory")
private List<CustomerRequest> customerRequests;
@NotBlank(message="referenceNumber is mandatory")
private String referenceNumber ;
}
类别CustomerRequest
public class CustomerRequest {
@NotBlank(message="customerRoleType is mandatory")
private String customerRoleType ;
}
控制器类
应用验证的方法:
@PostMapping("/orderDetail")
public void orderDetail(@Valid @RequestBody MerchantApplicationRequest request) {
try {
iOrderService.updateProductDetail(request);
} catch (Exception e) {
// ...
}
}
这是我的JSON负载:
{
"orderId" : 101,
"referenceNumber" : "123",
"customerRequests" : [ {
"customerRoleType" : null
}]
}
我在pom.xml
中使用Spring Boot应用程序:
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
如果您想要级联验证,您必须添加@Valid
注释:
@Valid
@NotEmpty(message="customerRequests is mandatory")
private List<CustomerRequest> customerRequests;
请在Hibernate验证文档中阅读更多关于级联的信息:例2.11:级联验证
使用bean验证(javax.validation
),您可以为集合的元素添加验证。
Using Bean-Validation 1.0
@JsonIngnoreProperties(ignoreUnknown=false)
public class MerchantApplicationRequest extends IomBaseDTO {
@NotEmpty(message="customerRequests is mandatory")
@Valid
private List<CustomerRequest> customerRequests;
@NotBlank(message="referenceNumber is mandatory")
private String referenceNumber ;
}
参见:
- JSR 303:如何验证一个带注释的对象集合?
- LogicBig教程:Collection Validation
Alternative since Bean-Validation -2.0
在Java 8中,也可以通过在菱形操作符内的类型前面加上注释来验证泛型类型,例如<@Valid CustomerRequest>
。这是定义每个元素验证的一种更简洁的方式。它具有与传统方法相同的效果,验证类(CustomerRequest
)中定义的每个给定元素。
参见:
- java/beans验证- collection/map不包含null
- Baeldung教程:使用Bean Validation 2.0验证容器元素