Struts 2.3 Store Interceptor:如何将ActionErrors从Interceptor传递给Action?

时间:2013-09-30 16:28:33

标签: java struts2 interceptor struts2-interceptors

我一直在阅读Struts 2文档中的StoreInterceptor,它讨论了如何将StoreInterceptor粘贴到struts-config.xml的Action定义中,它只是起作用。但是,如果您要在Action中创建并添加ActionErrors

我的问题是我正在使用LoginInterceptor进行登录,如果登录失败,则添加ActionError,如下所示:

((ActionSupport) invocation.getAction()).addActionError("Login failed");

它添加得很好,但是当我到达 LoginInterceptor之后调用的LoginAction时,ValidationAwareSupport.actionErrorsnull

我认为通过像这样添加StoreInterceptor,它会将ActionErrors存储在请求或会话中(使用operationMode "store"或{{1}参数):

"retreive"

但它不起作用。我也尝试将<action name="login" class="...LoginFormAction" > <interceptor-ref name="store"> <param name="operationMode">store</param> </interceptor-ref> <interceptor-ref name="defaultStack" /> <result name="input" type="tiles">adminLogin</result> <result name="success" type="tiles">adminLogin</result> </action> 直接添加到defaultStack,这也不起作用。

StoreInterceptor是否只能在动作之间保存StoreInterceptor,还能在拦截器和动作之间保存?

1 个答案:

答案 0 :(得分:0)

store拦截器在两个动作之间工作,其中一个存储消息,另一个检索它们。在您的配置中,您只有一个操作。应配置第二个操作以检索邮件。 store拦截器在动作和拦截器之间或拦截器之间不起作用。