2011-12-07 27 views
2

我正在使用JSF 2.0和primefaces。 我有一個頁面,裏面有一個表單和一個按鈕,它使用ajax向表中添加一條新記錄。一切正常。然後我使用JavaScript添加了客戶端驗證。這是命令按鈕的代碼:當與JS客戶端驗證相結合時,JSF ajax請求未被觸發

<p:commandButton value="Add" actionListener="#{reqAbsences.addPreLeaveDemand}" 
       onclick="return validateNewAbs()" 
       update="tableForm inputForm errorForm" /> 

如果驗證失敗,它按預期方式工作,並且記錄不會添加到表中。 驗證通過時出現問題:記錄已添加,但頁面重新加載(ajax不工作)。如果我再次刪除onclick="return validateNewAbs()" ajax作品。

任何想法爲什麼發生這種情況?

回答

2

您通過立即返回true覆蓋默認的ajax click事件。寧可讓它只返回false

onclick="if (!validateNewAbs()) return false;" 

但是,最好是在服務器端使用JSF內建/自定義驗證器進行驗證。這樣您就不需要將驗證複製到雙方中,驗證仍然可以在禁用JS的情況下使用。

+0

thanks @BalusC!這樣可行!是的,我同意你的意見,但我的老闆想要客戶端驗證,所以.. – Damian

+0

不客氣。 – BalusC