gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:49:21 25 4
gpt4 key购买 nike

为了避免重新提交表单,我使用了 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>

在 Action 类中:

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

编辑:

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

最佳答案

使用Message Store Interceptor在您的 insertReview 中存储操作消息并在您的 insertReviewDone 操作中检索它。当您返回 insertReviewDone 结果时,在 insertReview 方法中添加操作消息。

还使用 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>

关于java - 在 PRG 模式中如何在刷新成功页面上删除 ActionMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18914258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com