相关疑难解决方法(0)

Spring MVC表单验证:如何使字段可选?

我有一个表单(Spring 3 MVC项目),我正在使用DTO(数据传输对象)进行数据验证.数据被发送到控制器,我正在通过BindingResult.hasErrors()方法和适当的注释检查它的有效性.我将简化这里,因为我遇到了数字字段的问题.

DTO:

public class Item {

    private String discount;

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

}
Run Code Online (Sandbox Code Playgroud)

如果我提交没有在discount字段中写入的表单,BindingResult.hasErrors()将返回true与消息

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

我想要完成的是该discount字段可以为空,但如果在其中写入了某些内容,则它应该是由@Digits注释提供的数字格式.我怎样才能做到这一点?

java validation spring spring-mvc

4
推荐指数
1
解决办法
3048
查看次数

仅当对象字段不为空时才可以验证它吗?

此问题有两个现有变体:

  1. 仅在字段不为空时才进行验证:有条件地处理String字段的解决方案
  2. Hibernate验证 - 仅验证对象是否为空:唯一的答案演示了在手动触发验证时如何处理它的行为和提示.

我的问题添加了限定符,当在一个可能为null的对象上使用@Valid时,我该如何做到这一点.

这里的用例是我们有两个字段,其中一个或另一个不需要为null(包含字段的类上的自定义验证器).当一个不为null时,我需要它才有效.那么我是否需要在我的自定义验证器中完全手动验证该对象,为它添加的负责程度比预期的要多?

在这种情况下仅使用注释会导致抛出NullPointerException,这会在处理之前将其分解出验证.目前没有办法做到这一点吗?

java validation hibernate bean-validation

2
推荐指数
1
解决办法
3521
查看次数