Spring - 如何从BindingResult中删除`FieldError`?

th3*_*aly 8 java spring

我有一个BindingResult result已经FieldError注册的领域date.如何删除此错误?

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

提前致谢

Gre*_*eek 6

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

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

我唯一能想到的就是创建一个新的BindingResult实例,然后循环遍历错误并重新创建除了你想要忽略的那个之外的所有错误.


小智 5

这是一个实现 @GreyBeardedGuy 答案的示例,假设您要删除链接error到中field名称为from的调用:specialFieldclass MyModelmodelAttributemyModelBindingResult 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);
        }
Run Code Online (Sandbox Code Playgroud)