私はSpringでREST APIを構築しています。私は例外処理に問題があります。私は完全な要求を検証し、ペイロードに関する情報を一度に伝えたいと思います。スプリングジャーンソンの非直列化と例外処理
私のオブジェクトが
public class StubJson {
private BigDecimal bigDecimalField;
@NotEmpty
private String stringField;
public void setBigDecimalField(BigDecimal bigDecimalField) { this.bigDecimalField = bigDecimalField; }
public String setStringField(String stringField) { this.stringField = stringField; }
}
ですそして、私のコントローラは
@RestController
public class StubController {
@RequestMapping(value = "/stub", method = POST)
public void stub(@Valid @RequestBody StubJson stubJson) {}
}
あるこのオブジェクトの検証は、エンドユーザーのための翻訳エラーにFieldErrorオブジェクトを変換@ControllerAdviceである。仮定私はこのJSON
{"bigDecimalField": "text", "stringField": ""}
に渡すと、私はこれを行う場合は
@ResponseStatus(BAD_REQUEST)
@ResponseBody
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public List<ErrorJson> processValidationError(MethodArgumentNotValidException ex) {}
は私が
com.fasterxmlを取得し、この
[ { "field": "stringField", "message": "Cannot be empty." }, { "field": "bigDecimalField", "message": "Not a number." } ]
のような応答をしたいです。 jackson.databind.exc.InvalidFormatException
は、の情報のみを含むBigDecimalFieldにあります。フィールド。私が見る唯一のオプションは、文字列として渡すか、カスタム検証アノテーションを記述することです。これを達成する簡単な方法はありますか?
オブジェクトの変換は、検証準備が整う前でも失敗しています。 – ScanQR