私のエンティティクラスにはフィールドの1つに休止状態の@NotNull
が注釈されています。例外は@ExceptionHelper
にあります。私の問題は、無効なフィールドの値にアクセスしてロガーに追加できるようにすることです。ここでMethodArgumentNotValidExceptionの後に無効なフィールドの値を取得する
はExceptionHandler
次のとおりです。
@ExceptionHandler({ MethodArgumentNotValidException .class })
@ResponseBody
public ResponseEntity<?> handleInvalidMethodArgException(MethodArgumentNotValidException de) {
List<FieldError> bindingResult = de.getBindingResult().getFieldErrors();
LOGGER.debug(String.format("Start : %s : handleDataexception()", this
.getClass().getSimpleName()));
for(FieldError fieldError: bindingResult){
LOGGER.debug("Invalid {} value submitted for {}",
fieldError.getRejectedValue(), fieldError.getField());
}
ErrorMsg = new ErrorMsg(errorCode, errorMessage);
return new ResponseEntity<>(errMsg, HttpStatus.NOT_FOUND);
}
私はコントローラに@RequestBody
で@Validated
を追加しています。
回答ありがとうございます。ロガーに間違ったものを追加するのに役立つリンクは表示されません。 –
自分のコンセプトでシンプルなイメージを追加しました。アセンブラはエンティティをdtoに、そしてdtoをエンティティに処理するクラスです。転送/検証はあなたのログを追加できる場所です。 DTO - データ転送オブジェクト。不要なデータをビューからモデルに転送する場合にのみ作成され、逆も同様です。これは、エンティティ(あなたが提示する必要があるすべてのフィールド)より少ないフィールドを含むことができます。 – pokemzok