您应该遵循此答案中提到的PRG 模式。
创建一个将在重定向操作结果后返回您的 JSP 页面的新操作。registrationSuccess
<action name="register" class="-----------">
<interceptor-ref name="store">
<param name="operationMode">STORE</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
<result name="success" type="redirectAction">registrationSuccess</result>
</action>
<action name="registrationSuccess">
<interceptor-ref name="store">
<param name="operationMode">RETRIEVE</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
<result name="success">registration.jsp</result>
</action>
您可以使用store
拦截器在 HTTP 会话中存储操作消息/错误。动作类应该实现ValidationAware
。
拦截器store
在两个动作之间工作,其中一个存储消息,另一个检索它们。
一个拦截器,用于将ValidationAware
操作的消息/错误和字段错误存储到 HTTP 会话中,以便在稍后阶段可以检索到。这允许操作的消息/错误和字段错误比特定 HTTP 请求可用的时间更长。
如果不存在会话,则不会存储任何内容,以后可以检索。换句话说,应用程序负责打开会话。
在该STORE
模式下,拦截器会将ValidationAware
操作的消息/错误和字段错误存储到 HTTP 会话中。
在该RETRIEVE
模式下,拦截器将检索存储的动作的消息/错误和字段错误,并将它们放回
ValidationAware
动作中。
在该AUTOMATIC
模式下,拦截器会一直检索存储的action的message/errors和field errors并放回
ValidationAware
action中,并且在Action执行后,如果Result是一个实例ServletRedirectResult
,则自动将action的message/errors和field errors放入存储在 HTTP 会话中..