2016-12-28 43 views
-1

我用struts做登记和冬眠这里现在面临当我运行我的项目像一个问题,我会得到localhost/ProjectName/registration.jsp如何解决网址而获得的响应页面在Struts2

当我提交的数据,成功保存在数据库之后的数据在数据库中保存的数据要寻找registration.jsp作为响应的页面,但那个时候URL将会localhost/ProjectName/actionName.action一样,如果我刷新页面,最后添加的记录将被再次添加

JSP表单

这将创建一个问题

struts.xml的

<action name="register" class="-----------"> 
<result name="success">registration.jsp</result> 
</action> 
+0

@Andrea Ligios知道的事情,请不要将其标记为重复的,因为很多人都在做一些工作,人民的好知识,他们可能没有良好的沟通,解释 –

+1

“知道以前的事情”之前?您正在寻求一种防止双重提交的方法,即PRG(Post-Redirect-Get)。你正在使用Struts2。答案(你的问题是重复的)解释了如何用Struts2实现PRG。为什么我不认为这是重复的? –

+0

是的,这是PRG我已经尝试了这种方式,但在重定向之前我应该​​显示注册成功的消息我该怎么做 –

回答

0

您应该按照PRG patternthis答复中提到。创建一个新的行动会后重定向操作结果返回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模式下,拦截器会将动作的消息/错误和字段错误存储到HTTP会话中。

RETRIEVE模式,拦截器将检索存储 行动的消息/错误和CRC错误,并把它们放回 ValidationAware行动。

AUTOMATIC模式,拦截器将始终检索存储 行动的消息/错误和CRC错误,并把它们放回 ValidationAware行动,而行动执行后,如果结果是 的ServletRedirectResult的情况下,动作的消息/错误 和字段的错误进入自动被存储在HTTP会话..


+0

我试过这种方式,但在重定向之前,我应该显示如注册成功的消息我该如何做到这一点 –

+0

将动作消息添加到动作上下文中。 –

+0

无论你喜欢什么,你也可以在会话中显示消息。 –

相关问题