问题描述
我有一个REST端点,该端点在请求正文中带有一个对象和一个请求参数。传递请求参数时,我需要验证对象的所有属性(如果不是) 采用指定的默认值,并且仅需要验证2个属性。两种情况下的路径都必须相同。如何实现?
目前,我具有对象的图案,长度和可能值检查,并通过注释进行了验证。
-----更新类-------
@ValidateParent(parent = "parent ",child= "child")
public class anClass{
@NotNull(groups = {FrstValidator.class,SndValidator.class})
@Pattern(regexp = "^[a-zA-Z]{3}$",groups = {FrstValidator.class,SndValidator.class})
String str1;
@NotNull(groups = {FrstValidator.class,SndValidator.class})
String str2;
@Pattern(regexp = "^[a-zA-Z]{10}$",groups = SndValidator.class)
String child;
@Pattern(regexp = "^[a-zA-Z]{10}$",groups = SndValidator.class)
String parent;
@Pattern(regexp = "^[a-zA-Z]{10}$",groups = SndValidator.class)
String str3;
}
ValidateParent
,检查在请求正文中传递子代时是否也传递了父代。
解决方法
您可以使用验证组和两个单独的端点(以request参数的存在来区分)以一种优雅的“春季方式”实现您的目标:
验证组:
var now = moment().format('YYYY. MMM. DD. HH:mm');
alert(now);
请求DTO:
// Validation groups are just marker interfaces
private interface PartialValidation {}
private interface FullValidation {}
控制器:
@Data
private static class Request {
// This field will be validated only for FullValidation validation group
@NotNull(groups = FullValidation.class)
String field1;
// This field will be validated for both validation groups
@NotNull(groups = {FullValidation.class,PartialValidation.class})
String field2;
}