我一直在阅读Struts 2文档中的StoreInterceptor
,它讨论了如何将StoreInterceptor粘贴到struts-config.xml
的Action定义中,它只是起作用。但是,如果您要在Action中创建并添加ActionErrors
。
我的问题是我正在使用LoginInterceptor
进行登录,如果登录失败,则添加ActionError
,如下所示:
((ActionSupport) invocation.getAction()).addActionError("Login failed");
它添加得很好,但是当我到达 LoginInterceptor
之后调用的LoginAction时,ValidationAwareSupport.actionErrors
为null
。
我认为通过像这样添加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
,还能在拦截器和动作之间保存?
答案 0 :(得分:0)
store
拦截器在两个动作之间工作,其中一个存储消息,另一个检索它们。在您的配置中,您只有一个操作。应配置第二个操作以检索邮件。 store
拦截器在动作和拦截器之间或拦截器之间不起作用。