2009-01-12 108 views
1

在JSF中,是否可以使用JSF驗證框架(即驗證器,即時,必需等)來解決以下驗證/更新方案?JSF多個部分驗證方案

+-- Form ----------------------------------------------------+ 
|               | 
| Field A: |____________|v|         | 
| Field B: |____________|v|         | 
| Field C: |____________|v| Button: [Update C using A and B] | 
| Field D: |____________|v| Button: [Update D using B and C] | 
|               | 
| More Fields: ...           | 
|               | 
| Button : [Submit All]          | 
+------------------------------------------------------------+ 

其中所有字段是下拉菜單,並且其中按[更新C]按鈕只會導致A,B和C,以驗證但不是休息,按[更新d]按鈕只會導致字段B, C和D驗證並按[Submit All]按鈕將導致所有字段驗證。

回答

1

從技術上來說,是的,可以使用驗證器/立即執行此操作。但是,這不會特別簡單。

如果添加驗證程序,[使用A和B更新C]中的邏輯將僅在所有驗證程序通過或其立即屬性設置爲true時才運行。如果其立即屬性設置爲true,則按鈕邏輯無法使用getValue或組件綁定的任何對象讀取提交的組件值;它必須使用getSubmittedValue(一個壞主意)。

更好的方法是在所有控件綁定的託管bean中執行驗證邏輯。您可以將驗證邏輯放在您的按鈕綁定的任何方法中。使用[提交全部]按鈕可以將驗證的數據保存到數據庫/持久性存儲/不管。

+0

這主要是我的想法。它只是通過這樣做,你扔掉了整個驗證層。 JSF的這部分糟透了。 – Loki 2009-01-13 13:21:59

0

我通常使用Ajax做類似的事情,在那裏我會提交讓我感興趣的部分到服務器,在那裏驗證/處理,並返回結果到頁面。另一方面,它完全繞過了JSF和它的驗證機制,所以我想這不是最聰明的/最佳的解決方案......