我一直在阅读StoreInterceptorStruts 2 文档中的内容,它讨论了如何将 StoreInterceptor 粘贴到您的 Action 定义中struts-config.xml,并且它可以正常工作。但那是如果您ActionErrors在 Action 中创建和添加 from。
我的问题是我正在使用 a 进行登录LoginInterceptor,如果登录失败,则会添加ActionError如下内容:
((ActionSupport) invocation.getAction()).addActionError("Login failed");
它添加得很好,但是当我到达在之后调用的LoginAction 时LoginInterceptor,ValidationAwareSupport.actionErrors是null.
我认为通过添加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于动作之间的保存,而且适用于拦截器和动作之间的保存?