私は古典的なSpring MVCアプリケーションを持っています。
JSR-303 検証アノテーションが付けられた、対応する Java Bean を使用してフォームを検証したいと考えています。
フォーム データは、JSON を使用した ajax 呼び出しによって送信されます。この Json は、Jackson を使用してターゲットの Java Bean に変換されます - 春によって自動的に:
@RequestMapping(value = ControllerConstants.CALCULATION_MAPPING_SUBMIT_FORM,method = RequestMethod.POST)
public String submitForm(@Valid @RequestBody MyFormBean bean, final BindingResult result) {
...
}
問題は、たとえば、Bean に Integer フィールドがあるが、JSON では値が数値ではない場合です。この場合、検証できないターゲット Bean を作成できません。整数を表さないテキストを整数に変換する方法がないため、この状況はカスタム プロパティ エディタでは解決できません。
これは Grails で解決されているようです。データ バインディング中に作成する必要があるバリデーター (エラーはドメイン オブジェクト) からエラーが発生します。したがって、Spring がこれをサポートしていると想定しているため、Grails は Spring のサポートを使用しているだけです)
では、この状況をエレガントに解決して、この「検証」エラーを処理するにはどうすればよいでしょうか?
アップデート
実際、単純なフォーム送信を使用すると、これが春にサポートされることがわかりました。問題は、デシリアライズされた Jackson の統合にあります。エラーは埋められません。それでもこれを解決する方法は?