1
当我点击一个命令按钮,然后点击浏览器后退按钮的形式,再次单击它,它提交第二次没有抛出适当的异常...缝:令牌标签不被尊重
即使陌生人,当我回来时,表单ID本身是不同的,这意味着它在某个时刻已经重新生成了“有效”的表单ID。
下面是相关的代码:任何想法?
<h:form id="accountActivationForm">
<s:token/>
<a4j:commandButton id="cancelActivateAccountButton"
action="#{controller[cancelAction]}"
image="/images/button-Cancel-gray.gif"
reRender="#{reRenderList}"
oncomplete="#{onCancelComplete}" />
 
<a4j:commandButton id="activateAccountButton"
action="#{controller[agreeAction]}"
image="/images/button-i-agree-continue.gif"
styleClass="activate-account-button"
reRender="#{reRenderList}"
oncomplete="#{onActivationComplete}"/>
</h:form>
澄清:
- 我继承了这一点,所以我试图去改变它尽可能少。 (它在几个地方使用。)
- 每个操作都会返回一个视图,而不是null。我已经通过一行一行地确认了这一点。
- reRenderList在我当前的测试用例中是空的。
- onActivationComplete也是空的。
我要来要去,模板通过模板,看看是否有人与嵌套形式做出,因为我的同事不得不归因于不相关的问题,所以它不能伤害消除,作为一个可能的问题。
好的,为什么当我点击后退按钮时会重新加载?防止再次提交表单的最好方法是什么(因为它不是同一个表单)? – 2010-05-23 17:18:36
如果请求没有被浏览器缓存,后退按钮将重新执行请求。即该请求在响应头中至少包含'Cache-Control:no-cache','Pragma:no-cache'和'Expires:0'。 – BalusC 2010-05-23 17:37:03