0

struts2のaddActionErrorメソッドを使用して奇妙なエラーが発生しています。

アクションクラスの私のコードは次のとおりです。

this.addActionError(e.getMessage()); 
forward = ERROR;

STRUTS.xml:

 <action name="test" class="test">
    <result name="success">/struts/success.jsp</result>
    <result name="error">/struts/error.jsp</result>
    <interceptor-ref name="MyInterceptorStack" />
</action>

MyInterceptorStackは次のとおりです。

<interceptor-stack name="MyInterceptorStack">
    <interceptor-ref name="alias" />
    <interceptor-ref name="servletConfig" />
    <interceptor-ref name="prepare" />
    <interceptor-ref name="i18n" />
    <interceptor-ref name="chain" />
    <interceptor-ref name="debugging" />
    <interceptor-ref name="profiling" />
    <interceptor-ref name="scopedModelDriven" />
    <interceptor-ref name="modelDriven" />
    <interceptor-ref name="fileUpload" />
    <interceptor-ref name="checkbox" />
    <interceptor-ref name="staticParams" />
    <interceptor-ref name="params">
            <param name="excludeParams">dojo\..*</param>
    </interceptor-ref>
    <interceptor-ref name="conversionError" />
    <interceptor-ref name="DeltaInterceptor" />
    <interceptor-ref name="validation">
            <param name="excludeMethods">
                    input,back,cancel,browse
            </param>
    </interceptor-ref>
    <interceptor-ref name="workflow">
            <param name="excludeMethods">
                    input,back,cancel,browse
            </param>
    </interceptor-ref>
</interceptor-stack>

私のJSP:

<div><s:actionerror/></div>

メッセージは次のようになります。 ここに画像の説明を入力してください

ただし、結果は次のように重複します。

ここに画像の説明を入力してください

4

1 に答える 1

1

struts.propertiesまたはstruts.xmlstruts.xwork.chaining.copyErrors = trueに設定していますか?

通常の動作をオーバーライドし、チェーン インターセプターにチェーンを介してアクション エラー メッセージを保存する機能を与えます...チェーンなしでどのように動作するかは誰にもわかりません (チェーン インターセプターをチェーンされた結果でのみ使用すると仮定すると、それらを同じようにコピーする可能性があります。この var が true に設定されている場合)...

試してみてください。

編集: メッセージを追加するときに Java から行を出力できますか?

this.addActionError(e.getMessage()); 
System.out.println("Setting action error");
forward = ERROR;

何らかの理由でアクションが2回呼び出されていないことを確認するためだけに...

于 2012-10-23T09:19:38.020 に答える