1

我一直在阅读StoreInterceptorStruts 2 文档中的内容,它讨论了如何将 StoreInterceptor 粘贴到您的 Action 定义中struts-config.xml,并且它可以正常工作。但那是如果您ActionErrors在 Action 中创建和添加 from。

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

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

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

我认为通过添加StoreInterceptor这样的内容,它将存储ActionErrors在请求或会话中(使用operationMode "store"or"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>

但它不起作用。我也尝试将StoreInterceptor直接添加到 defaultStack 中,但这也不起作用。

StoreInterceptor不仅适用ActionErrors于动作之间的保存,而且适用于拦截器和动作之间的保存?

4

1 回答 1

0

store拦截器在两个动作之间工作,其中一个存储消息,另一个检索它们。

在您的配置中,您只有一项操作。第二个操作应配置为检索消息。

store拦截器在动作和拦截器之间或拦截器之间不起作用。

于 2013-09-30T17:36:12.157 回答