2011-05-04 52 views
3

有人告訴我,JSF 2.0自動處理多個提交問題。 是嗎? 如果是,JSF 2.0如何做到這一點? 如果否,那麼必須注意哪些事情,以便在處理此問題時不會留下任何陷阱?JSF 2.0和多個提交問題

謝謝。

回答

5

這是由JSF spec issue 559要求和維護。就目前而言,目前尚不存在,但它是針對即將到來的JSF 2.2的目標。

在此之前,Seam's <s:token>是您的最佳解決方案,它不僅防止CSRF(自從JSF 2.1以來不再嚴格需要,根據JSF impl issue 812),還可以雙重提交。

+0

我們沒有使用Seam。我們正在使用JSF 2.0和Prime Faces。任何想法或建議? – 2011-05-05 20:17:29

+1

你想處理這個clientside或serverside?如果客戶端,請檢查[這個答案] JavaScript'setTimeout()'方法(http://stackoverflow.com/questions/1750625/how-do-i-prevent-form-resubmission-in-seam/1751464#1751464) 。如果服務器端,我認爲在視圖範圍的bean的action方法中檢查和設置布爾屬性是最簡單的。對於更高級的解決方案,使用全功能令牌,您可以從[本文]中獲得一些想法(http://jroller.com/mert/entry/jsf_preventing_double_form_submit)。 – BalusC 2011-05-05 20:56:54

+0

感謝您的答覆和鏈接,他們很有幫助。 – 2011-05-06 18:28:23

0

<h:commandButton onclick ="setTimeout('document.getElementById(\'' + this.id + '\').disabled=true;', 50);setTimeout('document.getElementById(\'' + this.id + '\').disabled=false;', 500);" />

思想提高取決於您簡單而elagent解決方案。我想我們應該在一段時間後啓用提交按鈕。我相信你會想到這一點,但這是爲像我這樣的其他新手讀者:-)