gpt4 book ai didi

java - 在 Bean 中验证 Bean

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:49:59 25 4
gpt4 key购买 nike

我有以下 bean

public class MyModel {
@NotNull
@NotEmpty
private String name;

@NotNull
@NotEmpty
private int age;

//how do you validate this?
private MySubModel subModel;
}

public class MySubModel{

private String subName;

}

然后我使用@Valid 批注从 Controller 端对此进行验证。

谢谢

最佳答案

您可以使用 Bean Validation (JSR-303) 定义您自己的自定义验证,例如这里是简单的自定义邮政编码验证,通过使用您的自定义注释进行注释,您可以轻松验证:

@Documented
@Constraint(validatedBy = ZipCodeValidator.class)
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ZipCode {
String message() default "zip code must be five numeric characters";

Class<?>[] groups() default {};

Class<?>[] payload() default {};
}

自定义验证类,而不是 ,您可以使用自定义 beans,如 <YourAnnotationClassName,TypeWhichIsBeingValidated>

public class ZipCodeValidator implements ConstraintValidator<ZipCode, String> {

@Override
public void initialize(ZipCode zipCode) {
}

@Override
public boolean isValid(String string, ConstraintValidatorContext context) {
if (string.length() != 5)
return false;
for (char c : string.toCharArray()) {
if (!Character.isDigit(c))
return false;
}
return true;
}

}

下面是它的用法:

public class Address{

@ZipCode
private String zip;

}

关于java - 在 Bean 中验证 Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16513179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com