11

SpringWebflow2.0.xのコンテキストでは......

フォームバインディングの「typemismatches」を処理します。つまり、文字列を整数フィールドにマップしようとした結果、次のコマンドを使用します。messages.properties

typeMismatch={0} contains invalid data.

これは正常に機能します。

問題は、typeMismatchエラーが発生したフィールドが「必須」の場合、必須フィールドが欠落している場合にもエラーが発生することです。これは、送信された値がバインドされていないため、論理的だと思います。(「必須」はCommons Validation XMLファイルで定義されています)

そのため、typeMismatchが原因でフィールドが欠落しているだけの場合に、「XXXisrequiredfield エラーメッセージを表示したくありません。これを解決するにはどうすればよいですか?initBinder()FormActionをオーバーライドすることを考えましたが、すぐにどこにも行きませんでした。

4

2 に答える 2

2

Yves が述べたように、3 つのアプローチの中で、カスタム バリデータ メソッドを使用しましたが、これは非常に簡単です。フォーム フィールドにすでに必要な xml エラー メッセージがあるかどうかをチェックするカスタム バリデーターを使用できます。フィールドにエラーがない場合は、文字列の検証を確認できます。そうすれば、1つだけ表示されます。

使用できるもう 1 つの方法は、複数の xml 検証を試すことです。1 つは必須で、もう 1 つは特定の正規表現をチェックするマスクです。あなたの場合、フィールドが整数フィールドの場合、数値のみの正規表現チェックを使用してマスクを実行できます。xml 内のマスク (必須または必須) の順序によって、どちらのメッセージが優先されるかが決まります。

例えば:

<field property="somefield" depends="required,mask" page="2">
<arg key="somelabel"/>
<var>
    <var-name>mask</var-name>
    <var-value>${somepattern}</var-value>
</var>
</field>
于 2012-04-10T17:09:07.250 に答える
1

好みの順に多くのオプションがあります。

  • メッセージtypeMismatch.target.yourFieldNameまたはtypeMismatch.intリソースファイルを選択的に設定します

  • バインディング ステップの前に整数の解析が失敗した場合に専用のメッセージを送信できるように、独自の Validatorを実装します。

  • BindingErrorProcessor を作成して、さまざまな種類の解析の問題を処理します

于 2012-03-13T08:51:12.583 に答える