我正在使用struts和hibernate进行注册我遇到的问题就像我运行我的项目时会得到localhost/ProjectName/registration.jsp
当我提交数据时,数据在数据库中保存数据后成功保存在数据库中我正在寻找registration.jsp
作为响应页面,但是时间Url将是localhost/ProjectName/actionName.action
这会产生一个问题,如果我刷新页面最后添加的记录将再次添加
Jsp表格
<s:form action="register">
</s:form>
struts.xml中
<action name="register" class="-----------">
<result name="success">registration.jsp</result>
</action>
答案 0 :(得分:0)
您应该按照PRG pattern回答中提到的this进行操作。创建一个 new 操作,该操作将在重定向操作结果后返回您的JSP页面。
<action name="registration">
<interceptor-ref name="store">
<param name="operationMode">RETRIEVE</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
<result name="success">registration.jsp</result>
</action>
<action name="register" class="-----------">
<interceptor-ref name="store">
<param name="operationMode">STORE</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
<result name="success" type="redirectAction">registration</result>
</action>
您可以使用Message Store Interceptor在HTTP会话中存储操作消息/错误。操作类应该实现ValidationAware
。
商店拦截器在两个动作之间工作,其中一个存储消息,另一个检索它们。
用于存储
ValidationAware
操作消息/错误的拦截器 和字段错误进入HTTP会话,这样它就可以检索 在稍后阶段。这允许动作的消息/错误和字段 只有特定的HTTP请求才能提供更长的错误。如果不存在会话,则不会存储任何内容并且可以检索 后来。换句话说,应用程序负责打开 会话。
在
STORE
模式下,拦截器将存储ValidationAware
动作的消息/错误和字段错误进入HTTP会话。在
RETRIEVE
模式下,拦截器将检索存储的 动作的消息/错误和字段错误并将它们放回到ValidationAware
行动。在
AUTOMATIC
模式下,拦截器将始终检索存储的 动作的消息/错误和字段错误并将它们放回到ValidationAware
操作,以及Action执行后,如果结果是ServletRedirectResult
的一个实例,即操作的消息/错误 和字段错误自动存储在HTTP会话中..