我需要无法为某些字段设置负值。我使用注释
@Min(value = 0, message = "Amount Can't Be negative")
private BigDecimal amount;
但它什么都不做 - 仍然可以设置和保存负值。
我使用Spring MVC + JPA来保存交易。
我google了很多找不到任何帮助我的解决方案。请帮忙。 感谢
更新
我的服务是跨国的,有时保存对象甚至没有抛出我的默认保存功能。那么在提交任何交易之前有没有办法自动进行验证?
答案 0 :(得分:1)
既然你提到你正在使用Spring MVC,你需要验证你的bean。
你可以在RequestMapping中使用@Valid和你的bean一起使用:
@RequestMapping(value = "/save", method = RequestMethod.POST)
public String create(@Valid YourBean yourBean, BindingResult result, ModelMap modelMap)
或
您可以手动调用验证器,如
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<User>> violations = validator.validate(yourBean);
有关详细信息,请参阅this链接。
答案 1 :(得分:1)
当注释不起作用时,请确保实例变量具有一个“ getter”。
例如:
@Min(value = 0, message = "Amount Can't Be negative")
private BigDecimal amount;
public BigDecimal getAmount() {
return amount;
}