我有一个实体有一些限制:
@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,则发送的费用必须为空]]
我不明白问题出在哪里。。。如果有人有答案。
谢谢大家,对不起我的英语不好。。。。
暂无答案!
目前还没有任何答案,快来回答吧!