如何在spring mvc中验证Integer或long

时间:2015-08-20 08:58:08

标签: java hibernate validation spring-mvc

class employee{
...
private long phone;
...
}

我想使用spring jsr303验证器验证电话号码,在我的控制器中我正在使用@valid。我通过在错误消息属性文件中使用泛型typeMismatch来成功验证输入的值是数字还是字符串。

但是我想验证输入的数字格式是否正确。(@ pattern for string only)

如何实现这一点,请建议我。

1 个答案:

答案 0 :(得分:1)

通常电话号码是字符串,你可以使用@Pattern进行验证,但是如果要验证任何字段,你可以这样做。

自定义注释Javax验证器

@javax.validation.Constraint(validatedBy = { PhoneNumberConstraintValidator.class })
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
public @interface ValidPhoneNumber {
}

public class PhoneNumberConstraintValidator implements ConstraintValidator<ValidPhoneNumber, Long> {
    @Override
    public void initialize(final ValidPhoneNumber constraintAnnotation) {
        // nop
    }
    @Override
    public boolean isValid(final Long value, final ConstraintValidatorContext context) {
       //your custom validation logic 
    }
}

class employee{
...
private long phone;

@ValidPhoneNumber
public Long getPhone() { return phone; } 
...
}

或者如果你有hibernate验证器更简单,你可以在你的实体类中添加这个方法。

@org.hibernate.validator.AssertTrue
public boolean validatePhoneNumber() { }