spring methodargumentnotvalidexception字段始终为空

yyyllmsg  于 2021-07-05  发布在  Java
关注(0)|答案(0)|浏览(176)

我有一个实体有一些限制:

@FieldMustBeEqualToAnotherField(
        field = "sentCharges.currency",
        fieldToCompare = "settlementAmount.currency",
        message = "Sent charges currency must be null or equal to settlement amount currency")
public class MT103ApiDTO {
....
}

一个异常处理程序:

@RestControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {

    @Override
    protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
        List<Feedback> feedbacks = new LinkedList<>();
        ex.getBindingResult().getFieldErrors().forEach(fields -> {
            feedbacks.add(new Feedback().setCode(INVALID_FORMAT)
                                        .setLabel(fields.getDefaultMessage())
                                        .setSeverity(ERROR)
                                        .setType(BUS)
                                        .setSource(fields.getField()));
        });
        return handleExceptionInternal(ex, createAndLogError(ex, feedbacks), headers, BAD_REQUEST, request);
    }
}

我的问题是,当我抛出methodargumentnotvalidexception时,我捕获了它,但是在ex.getbindingresult().getfielderrors()上,我什么都没有,一直是空的,但是在stacktrace上,我可以看到出错的字段的名称
org.springframework.web.bind.methodargumentnotvalidexception:public com.soprabanking.ibd.digitalswiftmanager.model.api.messageapidto com.soprabanking.ibd.digitalswiftmanager.resource.mt103resource.generate(com.soprabanking.ibd.digitalswiftmanager.model.api.mt103apidto)中参数[0]的验证失败:[对象“mt103apidto”中的错误:代码[fieldmustbenullifanotherfieldinditolist.mt103apidto,fieldmustbenullifanotherfieldinditolist];参数[org.springframework.context.support.defaultmessagesourceresolvable:代码[mt103apidto.,];参数[];默认消息[],sentcharges,chargebearer,[ljava.lang.string@2bd828f4];默认消息[如果费用承担者代码为sha或ben,则发送的费用必须为空]]
我不明白问题出在哪里。。。如果有人有答案。
谢谢大家,对不起我的英语不好。。。。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题