0

我必须对不同的阶段进行不同的验证。例如:我有一个具有这些属性的学生类 public class Student{ integer id, integer rollNumber; 字符串名称;整数年龄,字符串父亲姓名,字符串母亲姓名}

我必须在不同条件下在数据库中保存之前验证对象:1.如果保存用于草稿阶段,则只有 id 和 rollnumber 应该是强制性的,2.如果保存用于提交阶段,那么所有字段都应该是强制性的。

有什么方法可以编写注释,我可以根据注释使用@draft 和@submit 定义这些验证。例如@valid(type=draft)

4

1 回答 1

1

给你..这不是很难..我将与您分享验证字符串是否为有效 IP 地址的代码:

您需要为验证器编写注释,并且需要编写具体的验证器实现:

下面是验证器的注释类,您可以在要验证的特定字段上使用它:

@Target({ FIELD})
@Retention(RUNTIME)
@Constraint(validatedBy = InetAddressValidator.class)
@Documented

public @interface ValidIP {

    String message() default "{ValidIP.message}";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};

}

现在您需要编写一个具体的验证器实现,如下所示:

public class InetAddressValidator implements ConstraintValidator<ValidIP, String> { 

private static final Pattern IPV4_PATTERN = 
Pattern.compile("^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."); 
public boolean isValid(String value, ConstraintValidatorContext context) {

    if (!(CommonUtility.isNullOrEmpty(value) || IPV4_PATTERN.matcher(value).matches()))     
    {
     return false;
    }

    return true;
}

 public void initialize(ValidIP parameters) {

 }

}

您可以在如下字段中包含此注释:

@ValidIP(message = "Enter a valid IP address")
private String ip;

当spring尝试将表单参数映射到bean时,这不会在绑定时起作用。

需要指出的是, isValid 方法是一种需要有逻辑来检查有效性的方法。

初始化方法是用于在调用 isValid 之前执行任何初始化的方法。

试试这个,如果您仍然需要有关自定义问题的帮助,请告诉我,我可能有时间为您编写。

于 2013-08-26T11:25:33.170 回答