Java 如何使用hibernate将数字字符串验证为数字?
我必须使用哪些注释进行Hibernate验证,以验证要应用于以下内容的字符串:Java 如何使用hibernate将数字字符串验证为数字?,java,hibernate-validator,Java,Hibernate Validator,我必须使用哪些注释进行Hibernate验证,以验证要应用于以下内容的字符串: //should always have trimmed length = 6, only digits, only positive number @NotEmpty @Size(min = 6, max = 6) public String getNumber { return number.trim(); } 如何应用数字验证?我会在这里使用@数字(分数=0,整数=6)吗?您可以用一个@模式(rege
//should always have trimmed length = 6, only digits, only positive number
@NotEmpty
@Size(min = 6, max = 6)
public String getNumber {
return number.trim();
}
如何应用数字验证?我会在这里使用
@数字(分数=0,整数=6)
吗?您可以用一个@模式(regexp=“[\\d]{6}”)替换所有约束。
。这意味着一个长度为6的字符串,其中每个字符都是一个数字 您还可以创建自己的hibernate验证注释。在下面的示例中,我创建了一个名为
EnsureNumber
的验证注释。带有此注释的字段将使用EnsureNumberValidator
类的isValid
方法进行验证
@Constraint(validatedBy = EnsureNumberValidator.class)
@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface EnsureNumber {
String message() default "{PasswordMatch}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
boolean decimal() default false;
}
public class EnsureNumberValidator implements ConstraintValidator<EnsureNumber, Object> {
private EnsureNumber ensureNumber;
@Override
public void initialize(EnsureNumber constraintAnnotation) {
this.ensureNumber = constraintAnnotation;
}
@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
// Check the state of the Adminstrator.
if (value == null) {
return false;
}
// Initialize it.
String regex = ensureNumber.decimal() ? "-?[0-9][0-9\\.\\,]*" : "-?[0-9]+";
String data = String.valueOf(value);
return data.matches(regex);
}
}
很不错的。这么简单!如何在此处向用户抛出消息?@Brooklyn99只需在括号内添加“message”参数,如下所示:
@Pattern(regexp=“[\\d]{6}”,message=“此字段应包含六位数字!”
@NotEmpty
@Size(min = 6, max = 6)
@EnsureNumber
private String number1;
@NotEmpty
@Size(min = 6, max = 6)
@EnsureNumber(message = "Field number2 is not valid.")
private String number2;
@NotEmpty
@Size(min = 6, max = 6)
@EnsureNumber(decimal = true, message = "Field number is not valid.")
private String number3;