Reputation: 19
I'm working on hibernate-validator and validation-api library, I want to validate a field name with type is Integer, my issue cause when user input with String type. It work with null and empty. If you used to has this problem, could you show me the way to resolve it?
@Entity
@Table(name = "shops")
public class Shop {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
@Column(name = "employees_number")
private Integer emplNumber;
// getter and setter
}
@Component
public class ShopValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return Shop.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
Shop shop = (Shop) target;
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "shop.name.empty");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "emplNumber", "shop.emplNumber.empty");
if (!NumberUtils.isNumeric(shop.getEmplNumber().toString())) {
errors.rejectValue("emplNumber", "shop.emplNumber.invalid");
}
}
}
public class NumberUtils {
public static boolean isNumeric(String isNum) {
try {
return isNum.matches("[1-9]+");
} catch (NullPointerException e) {
return false;
}
}
}
Here is picture I need to validate
Upvotes: 2
Views: 9090
Reputation: 1524
Try @Digits
and @NotBlank
annotations
@Entity
@Table(name = "shops")
public class Shop {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
@Column(name = "employees_number")
@NotBlank(message = "{shop.name.empty}")
@Digits(integer=10, fraction=0, message = "{shop.emplNumber.invalid}")
private String emplNumber;
// getter and setter
}
Upvotes: 2