我一直在阅读 Struts 2 文档中有关
StoreInterceptor
的内容,它讨论了如何将 StoreInterceptor
粘贴到 Action
定义中的 struts-config.xml
中,而且它确实有效。但也就是说,如果您要从 ActionErrors
中创建并添加 Action
。
我的问题是,我正在使用
Login
执行 LoginInterceptor
,如果 Login
失败,则会添加 ActionError
,如下所示:
((ActionSupport) invocation.getAction()).addActionError("Login failed");
它添加得很好,但是当我到达
LoginAction
时,它是在LoginInterceptor
之后调用的,
ValidationAwareSupport.actionErrors
是
null
。我认为通过像这样添加
StoreInterceptor
,它会在请求或会话中存储
ActionErrors
(使用
operationMode
"store"
或
"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
,还可以在拦截器和动作之间保存?