java - 如何在 spring mvc 中验证整数或长整型

标签 java hibernate validation spring-mvc

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

我想使用 spring jsr303 validator 验证电话号码,在我的 Controller 中我使用@valid。我通过使用放置在错误消息属性文件中的通用 typeMismatch 成功验证输入的值是数字还是字符串。

但我想验证输入的数字格式是否正确。(@pattern 仅适用于字符串)

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

最佳答案

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

自定义注解Javax validator

@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 validator ,则更简单,您可以在实体类中添加此方法。

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

关于java - 如何在 spring mvc 中验证整数或长整型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32113874/

相关文章:

validation - 在 Blade 中调用 @if ($errors->has()) 时,调用数组上的成员函数 has()

ruby-on-rails - 为什么不显示验证错误消息?

java - 从 ServletContext 资源解析 XML 文档时出现 IOException [/WEB-INF/spring-dispatcher-servlet.xml]

java - 获取锁后重新分配对象变量

mysql - 当尝试使用现有字段插入新实体时,Spring 抛出 PersistentObjectException

java - 无法 hibernate 以连接到mysql数据库 - Spring

java - 使用 map 集合 hibernate 多对多

tensorflow - Keras:训练数据的自定义数据验证回调总是返回验证数据结果

java - 结果集编码问题

java - 有没有一种简单的方法来计算 x * 2 + 1?