1

datepicker で struts2 フォームを使用します。

<s:form action="%{#parameters.myAction}" namespace="/" method="post" name="myForm" enctype="multipart/form-data" focusElement="dealTitleId" validate="true">
...
<sj:datepicker name="dealDisplayEnd" required="true" key="dealDisplayEnd-label" displayFormat="dd-mm-yy" readonly="true" minDate="0"/>

クライアント側の検証を有効にするオプションに注意してくださいvalidate="true"(エラーが発生したときに、ファイルのアップロードに関する他の情報が失われるのを防ぐためにこれが必要です)。

次に、その XML も作成します。

<field name="dealDisplayEnd">
        <field-validator type="required">
             <message key="error.dealDisplayEnd.empty"/>
        </field-validator>
  </field>

エラーが 2 回繰り返されることを除いて、すべて正常に動作します。

エラーが 2 回表示される

Web ページのソースを見ると、検証スクリプトが 2 回生成されていることがわかります。

 // field name: dealDisplayEnd
        // validator name: required
        if (form.elements['dealDisplayEnd']) {
            field = form.elements['dealDisplayEnd'];
            var error = "Deal display end date must be provided!";
            if (field.value == "") {
                addError(field, error);
                errors = true;

            }
        }
        // field name: dealDisplayEnd
        // validator name: required
        if (form.elements['dealDisplayEnd']) {
            field = form.elements['dealDisplayEnd'];
            var error = "Deal display end date must be provided!";
            if (field.value == "") {
                addError(field, error);
                errors = true;

            }
        }

これは struts2 のバグですか? それとも私は何か間違ったことをしていますか?日付ピッカーとクライアント側の検証を使用しているためですか? 私は struts2-core-2.3.4.jar と struts2-jquery-plugin-3.3.3.jar を使用しています。パッチを適用する簡単な方法はありますか (これが生成された場所を見つけることができませんでした)?

ありがとう。

4

1 に答える 1

1

はい、その通りです。 のバグのようですstruts2-jquery-plugin。ここにいくつかの参照があります:

参考1
参考2

の作者からのアドバイスstruts2-jquery-plugin:

In this case you should not set validate="true". Implement you own validation handling in an own onBeforeTopic. How it works can you see in the struts2 jquery sources.

を使用していると思いますが、プロパティを使用していない場合は<sj:submit/>使用してみてください。問題が解決する可能性があります。この問題を解決する方法は他にもあります。自分で試してみてください。達成できない場合はお知らせください。<s:submit/>targets

于 2012-09-20T10:17:17.153 に答える