0

我有 2 个动作。第一个显示表格,另一个处理表格。如果processAdd未验证操作,则将重定向操作返回到Add操作。Store拦截器在“添加”操作上显示正确的错误,但表单上填写的值在重定向操作期间丢失。

loose Value Stack在重定向,我明白这一点。

有什么解决办法吗?

不想使用结果参数,工作量太大。

 <action name="add" class="com.myapp.actions.StudentAction" method="input">
            <interceptor-ref name="store">
                <param name="operationMode">RETRIEVE</param>
            </interceptor-ref>
            <result name="input" type="tiles">/student.edit.tiles</result>
        </action>

        <action name="processAdd" class="com.myapp.actions.StudentAction">
            <interceptor-ref name="store">
                <param name="operationMode">STORE</param>
            </interceptor-ref>
            <interceptor-ref name="defaultStack" />
            <result name="success" type="redirectAction">list</result>
            <result name="input" type="redirectAction">add</result>
            <result name="failure" type="redirectAction">add</result>
        </action>
4

2 回答 2

1

消息存储拦截器

一个拦截器,用于将 ValidationAware 操作的消息/错误和字段错误存储到 HTTP 会话中,以便在稍后阶段可以检索它。这允许操作的消息/错误和字段错误比特定 HTTP 请求可用的时间更长。

您无法使用消息存储拦截器获取值堆栈数据,它关心操作消息/错误和字段错误。

或者,您可以使用链拦截器或在会话中存储值,即使消息存储拦截器使用会话对象来存储消息/错误。

于 2012-10-08T01:39:58.150 回答
1

您正在寻找的是Scope Interceptor,而不是 Store Interceptor。

于 2012-10-08T06:19:21.650 回答