在PRG模式中如何删除刷新成功页面上的ActionMessage

2023-12-04

为了避免表单重新提交,我使用了 POST-Redirect-GET 模式,它工作正常。现在,在我的注册页面(成功页面)上,它显示 ActionMessage“审阅已成功插入!”。当用户刷新页面时我想删除此消息。

我在JSP页面上的代码:

<s:if test="hasActionMessages()">
    <div class="success-mesg" id="success-mesg">
        <s:iterator value="actionMessages">
            <s:property value="top" />
        </s:iterator>
    </div>
</s:if>

在 struts.xml 上:

<action name="insertReview" class = "com.tenkinfo.streamlinedmapnsav.ui.action.WriteReviewAction" method="insertReview" >
    <result name="insertReviewDone" type="redirect" >insertReviewDone</result>
    <result name="input" type="tiles">display.writeReview.page</result>
</action>

<action name="insertReviewDone" class = "com.tenkinfo.streamlinedmapnsav.ui.action.WriteReviewAction" method="insertReviewDone" >
    <result name="success" type="tiles" >display.writeReview.page</result>
</action>

在动作类中:

public String insertReviewDone(){
    addActionMessage("Write review is successful");
    return "success";
}

Edit :

在实施 Aleksandr M 建议的答案后,我遇到以下问题:

<s:form name="insertReview" action="insertReview" id="insertReview"
            theme="simple" enctype="multipart/form-data">
        <div class="content-area">
            <h1>
            Review
            <s:property value="businessName" />
            </h1>
            <s:if test="hasActionMessages()">
            <div class="success-mesg" id="success-mesg">
            <s:iterator value="actionMessages">
        <s:property value="top" />
    </s:iterator>
   </div>
</s:if>

刷新上述代码中的页面后,businessName 被删除并且不显示。 任何帮助将不胜感激。


Use Message Store Interceptor将操作消息存储在您的insertReview并在您的中检索它insertReviewDone行动。 添加操作消息insertReview返回时的方法insertReviewDone result.

还使用redirectAction结果重定向到操作而不是redirect.

<action name="insertReview" class = "com.tenkinfo.streamlinedmapnsav.ui.action.WriteReviewAction" method="insertReview">
  <interceptor-ref name="store">
    <param name="operationMode">STORE</param>
  </interceptor-ref>
  <interceptor-ref name="defaultStack" />

  <result name="insertReviewDone" type="redirectAction">insertReviewDone</result>
  <result name="input" type="tiles">display.writeReview.page</result>
</action>

<action name="insertReviewDone" class = "com.tenkinfo.streamlinedmapnsav.ui.action.WriteReviewAction" method="insertReviewDone" >
  <interceptor-ref name="store">
    <param name="operationMode">RETRIEVE</param>
  </interceptor-ref>
  <interceptor-ref name="defaultStack" />

  <result name="success" type="tiles">display.writeReview.page</result>
</action>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在PRG模式中如何删除刷新成功页面上的ActionMessage 的相关文章