我有一个注册表。当我发布表单时,会出现此错误Failed to convert property value of type [java.lang.String] to required type [int] for property number; nested exception is java.lang.NumberFormatException: For input string: "wewer"
。所以我正在寻找一种检查数据类型的简单方法。我曾尝试使用@Pattern(regexp = "[A-Za-z]", message = "digits only")
,但这不会奏效。是否有任何一行注释要使用?
更新:感谢RC的想法。为数字创建一个字符串,然后将其转换回来。我认为我的解决方案并不好,因为我必须在User类中添加一个条目,更改寄存器表单中的字段。
@Component
public class UserValidator implements Validator {
@Override
public boolean supports(Class clazz) {
return User.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
User user = (User) target;
if(user.getUsername() == null || user.getUsername() == "") {
errors.rejectValue("username", "","username is empty");
}
if(user.getNumberString().isDigit == false) {
errors.rejectValue("number", "","digits only");
} else {
user.setNumber(Integer.parseInt(user.getNumberString());
}
}
我的用户班。
public class User {
private int id;
private String username;
//@Pattern(regexp="[A-Za-z]" ,message = "No characters")
//@NotNull
@Min(3)
private Integer number;
private String numberString;
}