Spring MVC的表单验证:如何让外地可选?(Spring MVC form validatio

2019-08-06 01:44发布

我有一个表格(春季3 MVC项目)和我使用的DTO(数据传输对象)的数据验证。 数据被发送到控制器,我检查它与有效性BindingResult.hasErrors()方法和相应的注解。 我要去,因为我在与数字领域的问题,以简化这里。

DTO:

public class Item {

    private String discount;

    @Digits(integer = 15, fraction = 2)
    public String getDiscount() {
        return discount;
    }

}

如果我提交表单什么也没有写在discount场, BindingResult.hasErrors()将返回消息属实

numeric value out of bounds (<15 digits>.<2 digits> expected)

我想做到的是, discount字段可以是空的,但如果事情是写在它应该在提供数字格式@Digits注解。 我怎样才能做到这一点?

Answer 1:

什么,你需要做的是配置Spring转换空字符串 。 您可以通过注册一个实现这一StringTrimmerEditor在你的FormController initBinder方法:

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}

StringTrimmerEditor一个

然后由指定帕西法尔, @Digits考虑null值的Valide。



Answer 2:

您可以创建自定义的验证注解。 :一种解释可以在Spring文档上找到http://static.springsource.org/spring/docs/3.0.0.RC3/reference/html/ch05s07.html ,票面5.7.2.2



文章来源: Spring MVC form validation: how to make field optional?