私はStruts(2.2.3)で本当に腹立たしい問題を抱えています。これがActionName-validation.xmlでの私のフィールド検証です
<field name="txtRequestDateFrom">
<field-validator type="conversion">
<param name="repopulateField">false</param>
<message>${getText("E011", {"Date from"})}</message>
</field-validator>
</field>
アクションクラスにvalidate()メソッドがありません。そして、私は私のアクションクラスにこれを持っています:
private Date txtRequestDateFrom;
{getter, setters}
txtRequestDateFromフィールドに文字を入力すると、3つの検証メッセージが表示されます。
<s:fielderror fieldName="txtRequestDateFrom"/>
こんな感じ
Invalid field value for field "txtRequestDateFrom".
Invalid field value for field "txtRequestDateFrom".
Date from has an invalid value
カスタムテーマがありますが、SIMPLEテーマからの変更はほとんどないと確信しています。私のインターセプタースタックは、ほとんど同じデフォルト値スタックです。
<interceptor-stack name="defaultStack">
<interceptor-ref name="security"/>
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="debugging"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUploadStack" />
<interceptor-ref name="fileUpload" >
<param name="maximumSize">4000000</param>
</interceptor-ref>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="multiselect"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params"/>
<interceptor-ref name="conversionError" />
<interceptor-ref name="validation">
<param name="excludeMethods">execute, complete ...</param>
</interceptor-ref>
<interceptor-ref name="workflow"/>
</interceptor-stack>
スタックからconversionErrorインターセプターを削除することで、1つのフィールドエラーを削除できることがわかりました。しかし、それがこの問題を引き起こすとは思わない。Strutsは、開発者によってのみ定義されたエラーを表示できるはずですよね?
これで私を助けてください