11

我有一个BindingResult resultFieldError注册的字段date。如何消除此错误?

假设错误被添加为result.rejectValue("date", "my_code", "my_message") ;

提前致谢

4

3 回答 3

8

好吧,首先,BindingResult 是一个接口,而不是一个具体的类,并且该接口没有指定任何消除错误的方法。

根据您正在处理的接口的实现,可能有一种方法(超出 BindingResult 接口中指定的方法)来执行此操作,但似乎不太可能。

我能想到的唯一一件事是创建一个新的 BindingResult 实例,然后遍历错误并重新创建除了您想在新实例中忽略的所有错误。

于 2012-09-20T14:25:04.193 回答
2

这是一个实现 @GreyBeardedGuy 答案的示例,假设您要删除error链接到field名为fromspecialFieldclass MyModel调用modelAttributemyModelBindingResult result

List<FieldError> errorsToKeep = result.getFieldErrors().stream()
                .filter(fer -> !fer.getField().equals("specialField "))
                .collect(Collectors.toList());

        result = new BeanPropertyBindingResult(vacancyDTO, "vacancyDTO");

        for (FieldError fieldError : errorsToKeep) {
            result.addError(fieldError);
        }
于 2019-07-09T11:00:54.217 回答
0

重要的问题是,它最初是如何到达那里的?我假设date是一个 java.util.Date 字段并且由于格式问题而绑定失败?

例如,您输入01/01/1970并预期1970-01-01或类似的东西?这里的原因是因为 Spring MVC 有一个默认的日期绑定器。它需要获取日期的字符串表示形式并将其转换为 java.util.Date 并失败,因为它与适当的格式不匹配。

看看@InitBinder以及如何覆盖字符串到日期的转换以接受不同的格式。

于 2012-09-20T15:21:27.657 回答