2
我問了我的問題here但我認爲它缺少一些明顯的信息。因此我再次發佈我的問題。跳過驗證並調用應用程序
我有一個JSF表單,其中有一些需要驗證的h:inputText字段。提交表單時,我想跳過(或忽略)所需的驗證檢查並仍然調用應用程序。我確實希望進行表單數據驗證並根據某些條件顯示錯誤。
基本上我想跳過驗證並在使用ajax調用提交表單時調用應用程序,並在通過單擊提交按鈕提交表單時進行驗證。
我問了我的問題here但我認爲它缺少一些明顯的信息。因此我再次發佈我的問題。跳過驗證並調用應用程序
我有一個JSF表單,其中有一些需要驗證的h:inputText字段。提交表單時,我想跳過(或忽略)所需的驗證檢查並仍然調用應用程序。我確實希望進行表單數據驗證並根據某些條件顯示錯誤。
基本上我想跳過驗證並在使用ajax調用提交表單時調用應用程序,並在通過單擊提交按鈕提交表單時進行驗證。
只要把即條件直接在required
屬性中。
<h:inputText ... required="#{someCondition}" />
它只是接受像許多其他屬性的任何EL表達式。許多初學者認爲你只能對其中的"true"
或"false"
字符串進行硬編碼。這是不真實的。
例如,當你要讓它評估true
只有當保存按鈕實際上是按下:
<h:inputText ... required="#{not empty param[save.clientId]}" />
...
<h:commandButton value="Cancel" ... />
<h:commandButton binding="#{save}" value="Save" ... />
(注:代碼完成原來的樣子,你不需要綁定它Bean屬性)
這樣的required
屬性只計算當保存按鈕被按下true
和用於其他任何按鈕或AJAX事件監聽評估false
。
這實際上聽起來像一個絕妙的主意。然而,它在我的應用程序中沒有按預期工作。基本上所需的驗證不會被觸發。如果在進行驗證時服務器端的條件評估爲true,是否有方法進行調試?我所做的是將需要的映射到一個支持bean屬性,即required =「#{validate.validateRequired}」,然後隱藏表單字段映射到該屬性,當點擊按鈕提交表單時該屬性將打開。我的表格以不尋常的方式設計,因此我需要這樣做。 –
它應該工作。也許你在使用JSF 1.x時沒有在問題中明確提到它?在JSF 1.x中,'UIComponent'類沒有無參數的'getClientId()'方法,因此'#{save.clientId}'會失敗。幾乎4年前發佈了JSF 2.x,沒人會期望這些日子裏仍然可以使用JSF 1.x。如果您使用的庫比以前版本舊,那麼您應該**總是**在問題中明確提及它。對於JSF 1.x還有一種方法,但您必須自己硬編碼組件的客戶端ID。 – BalusC
我使用JSF2.x順便說一句。對不起,我必須編輯我的評論,而你回答它。 –