AJAX が普及する前は、カスタム プロパティ エディターを使用してコントローラーに登録することで、id とエンティティの間で変換することができました。したがって、User
フォーム バッキング オブジェクトに が含まれていたCompany
場合、company.id
5 の場合、Spring はカスタム プロパティ エディタを呼び出して、ID を持つ Company を取得し、5
それをプロパティに設定できるようにしますuser.company
。
Ajax のやり方では、同様の要件があります。フォーム バッキング オブジェクトを使用する代わりに、オブジェクトの HTTP POST または PUT をUser
JSON データとして実行し、Spring でその JSON をユーザー オブジェクトに自動的に変換します。Spring は、@RequestBody
アノテーションと、Jackson を使用して JSON を Java オブジェクトにマーシャリングすることで、これを可能にしました。
これは単なる架空の例です。適切なゲッター/セッターUser
を持つオブジェクトを含むと想像してください。Company
@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.NO_CONTENT)
public void create(@Valid @RequestBody User user) {
userService.saveUser(user);
}
Spring に関する限り、プロパティ エディターは過去のものであるため、新しい Conversion Service API を使用することが期待されています。私のアプリケーションでは、古いプロパティ エディターが以前行っていた処理 (ID をエンティティに戻す変換) を行うファクトリを正常に作成できました。
私の質問は、Jackson が JSON データをマーシャリングしている間またはその後に、Spring が変換サービスを呼び出せるようにするにはどうすればよいかということです。custom を作成できることはわかっていますがJsonDeserializer
、これらの作成/テストは、膨大な数のエンティティに対して行う必要があるため、苦痛で時間のかかるプロセスであり、各デシリアライザーには 60 ~ 200 行のコードが必要です。各。
フォームバッキングオブジェクトの場合と同じように、Spring が私に代わって ID からエンティティへのマッピングを行うことができれば幸いです。方法はありますか?