Jakarta ee 重定向时存储拦截器和松散值堆栈

Jakarta ee 重定向时存储拦截器和松散值堆栈,jakarta-ee,struts2,Jakarta Ee,Struts2,我有两个动作。首先显示表单,然后处理表单。如果未验证processAdd操作,则将操作重定向回Add操作存储拦截器在“添加”操作上显示正确的错误,但表单上填写的值在重定向操作期间丢失 我loose Value Stack关于重定向,我理解这一点 有什么解决办法吗? 不想使用结果参数,工作量太大 <action name="add" class="com.myapp.actions.StudentAction" method="input"> <inte

我有两个动作。首先显示表单,然后处理表单。如果未验证
processAdd
操作,则将操作重定向回
Add
操作<代码>存储拦截器在“添加”操作上显示正确的错误,但表单上填写的值在重定向操作期间丢失

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>

检索
/student.edit.tiles
贮藏
列表
添加
添加

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

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


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

你要找的是商店拦截器,而不是商店拦截器。

@quaternion,我试过了,但没有成功。你能用我上面的代码来解释你想让我怎么做吗?参见文档,它解释了你可以指定struts2常量来实现这一点,我认为自定义拦截器堆栈中的显式include参数也会使它工作:我不确定为什么要在消息失败时重定向到另一个操作?还有为什么你想做很多关于验证失败的工作。@umesh awasthi,我有自己的理由这么做。抱歉给你添麻烦了。我可以通过session等来实现这一点,但我想知道框架内的任何自动支持。Scope Interceptor就是答案。谢谢。这就是我要找的。谢谢。我已经知道了。不希望将错误从一个操作存储到另一个操作。我对房产价值感兴趣。