我有一个BindingResult result
已FieldError
注册的字段date
。如何消除此错误?
假设错误被添加为result.rejectValue("date", "my_code", "my_message") ;
提前致谢
好吧,首先,BindingResult 是一个接口,而不是一个具体的类,并且该接口没有指定任何消除错误的方法。
根据您正在处理的接口的实现,可能有一种方法(超出 BindingResult 接口中指定的方法)来执行此操作,但似乎不太可能。
我能想到的唯一一件事是创建一个新的 BindingResult 实例,然后遍历错误并重新创建除了您想在新实例中忽略的所有错误。
这是一个实现 @GreyBeardedGuy 答案的示例,假设您要删除error
链接到field
名为fromspecialField
的class
MyModel
调用modelAttribute
:myModel
BindingResult
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);
}
重要的问题是,它最初是如何到达那里的?我假设date
是一个 java.util.Date 字段并且由于格式问题而绑定失败?
例如,您输入01/01/1970
并预期1970-01-01
或类似的东西?这里的原因是因为 Spring MVC 有一个默认的日期绑定器。它需要获取日期的字符串表示形式并将其转换为 java.util.Date 并失败,因为它与适当的格式不匹配。
看看@InitBinder以及如何覆盖字符串到日期的转换以接受不同的格式。