我试图做一个嵌套的验证我的Spring应用程序。嵌套确认团组,春,JSR 303
public class Parent{
public interface MyGroup{}
@NotNull(groups = MyGroup.class)
private Child child;
// getters and setters omited
}
public class Child{
public interface OptionalGroup {}
@NotBlank(groups = OptionalGroup.class)
private String aField;
}
我已经从javax.validation包看过@Valid,但它不支持组。我也检查了Spring的@Validated注解,但是我不能将它应用到字段上。
我想要做的事,如:
public class Parent{
public interface MyGroup{}
@NotNull(groups = MyGroup.class)
@CascadeValidate(groups = MyGroup.class, cascadeGroups = OptionalGroup.class)
// 'groups' correspond to parent group and 'cascadeGroups' to a group that needs to be apply to the Child field.
private Child child;
}
,然后我可以做务实的地方我想:
@Inject SmartValidator validator;
public void validationMethod(Parent parent, boolean condition) throws ValidationException {
if(condition){
MapBindingResult errors= new MapBindingResult(new HashMap<>(), target.getClass().getSimpleName());
validator.validate(parent, errors, Parent.MyGroup.class); // validate all constraints associated to MyGroup
if(errors.hasErrors()) throw new ValidationException(errors); // A custom exception
}
}
任何想法如何做到这一点?
非常感谢
'@ Validated'用于指定验证时使用哪些组。因此,从网络提交表单时只验证指定的组。您可以指定0个或更多组用于验证。 –
是的,我无法达到我想要的这个注释,但是因为它的理念我谈论了它。我的问题与表单或网络无关,只与级联验证组 –
这并不是真正相关的,而是与bean验证的工作方式有关。 Spring不会添加任何东西。 –