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