0

私は古典的な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 の統合にあります。エラーは埋められません。それでもこれを解決する方法は?

4

1 に答える 1

0

2つのオプションが表示されます...

  1. フォーマットの問題がある場合にフォームの送信を許可しないクライアント側の検証を行います。

  2. サーバー側では、例外をキャッチしてクライアントに問題を報告する例外を処理するメカニズムが必要です。

それが役立つことを願っています。

編集:

クライアント側の検証がないと、ユーザー エクスペリエンスが良くない可能性があります。ユーザーは、サーバーを往復した後に検証エラーについて通知されることを望んでいません。ただし、これがまだ制約である場合は、次の URL を参照してください。このような問題を処理し、有益なエラー メッセージを報告する洗練された方法が提供されます。

http://www.mkyong.com/spring-mvc/spring-3-mvc-and-jsr303-valid-example/

于 2012-05-16T13:18:02.313 に答える