0

我在使用 struts2 的 addActionError 方法时遇到了一个奇怪的错误。

我在 Action Class 中的代码是:

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.xwork.chaining.copyErrors = truestruts.propertiesstruts.xml中设置?

它将覆盖正常行为,使链拦截器能够通过链保留操作错误消息......谁知道它会如何在没有链的情况下运行(假设您仅使用链式拦截器和链式结果,它可能复制它们相同,当此 var 设置为 true 时)...

试一试。

编辑:您可以在添加消息时从 java 中打印出一行吗?

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

只是为了检查该动作是否由于某种原因没有被调用两次......

于 2012-10-23T09:19:38.020 回答