@min注释不起作用

时间:2018-01-18 21:29:21

标签: java spring bean-validation

我需要无法为某些字段设置负值。我使用注释

@Min(value = 0, message = "Amount Can't Be negative")
private BigDecimal amount;

但它什么都不做 - 仍然可以设置和保存负值。

我使用Spring MVC + JPA来保存交易。

我google了很多找不到任何帮助我的解决方案。请帮忙。 感谢

更新

我的服务是跨国的,有时保存对象甚至没有抛出我的默认保存功能。那么在提交任何交易之前有没有办法自动进行验证?

2 个答案:

答案 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;
}