在PRG模式中如何在刷新成功页面上删除ActionMessage [英] In PRG pattern How to remove ActionMessage on refreshing success page

查看:133
本文介绍了在PRG模式中如何在刷新成功页面上删除ActionMessage的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为了避免重新提交表单,我使用了POST-Redirect-GET模式,它运行正常。现在在我的注册页面(成功页面)上显示ActionMessageReview Inserted successfully!。当用户刷新页面时,我想删除此消息。

To avoid the form resubmission I used POST-Redirect-GET pattern and it is working fine. Now on my registration page(success page) it is showing the ActionMessage "Review Inserted successfully!". When user refreshes the page I want to remove this message.

我在JSP页面上的代码:

My code on JSP page:

<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上:

On 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";
}

修改:

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

After implementing the answer suggested by Aleksandr M, I am having below problem:

<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被删除而不显示。
任何帮助将不胜感激。

After refreshing the page in above code businessName is removed and not displaying. Any help will be appreciated.

推荐答案

使用 消息存储拦截器 将动作消息存储在 insertReview 并在 insertReviewDone 操作中检索它。
当您返回 insertReviewDone 结果时,在 insertReview 方法中添加操作消息。

Use Message Store Interceptor to store action message in your insertReview and retrieve it in your insertReviewDone action. Add action message in insertReview method when you are returning insertReviewDone result.

还可以使用 redirectAction 结果重定向到操作,而不是重定向

Also use redirectAction result to redirect to action instead of 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>

这篇关于在PRG模式中如何在刷新成功页面上删除ActionMessage的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆