蕭秋水的博客


          帶著淡淡的倦意,輕輕的憂惺,宛若遠山含笑迷蒙,但又如閃電驚雷般震人心魄……

          ADF Faces中如何跳過驗證 - 轉載

          ADF具有一個非常健壯的驗證框架。表單驗證可以在各個層次上進行(view, model和business service)。如果需要詳細研究驗證機制,請參考Fusion Developer's Guide for Oracle Application Development Framework.

          在現實的開發過程中,經常有一些頁面需要暫時的跳過默認的驗證,本文旨在討論下常見的use case:

          1. Keep immediate=true

           一個最常用的方式就是將UICOMPONENT的immediate屬性設置為true,這樣可以將對組件的處理提前到Apply Request Values階段。關于immediate屬性可以參考 wiki

          典型用例:cancel button,在取消按鈕點擊時,頁面是不需要驗證提交的表單的。可以將按鈕組建的immediate屬性設為'true'來實現這個功能。 如果是一個reset按鈕,那么除了immediate屬性需要設為'true‘外,最好還要調用下相關其他input組件的resetValue()方法,來恢復初始狀態。

           

          2. SkipValidation

          另外一種方式,是設置pagedefinition 文件的SkipValidation 屬性。該屬性可以控制跳過model層的驗證。需要注意的是,這個屬性只對entity level的validation rule起作用,對于entity object的attribute上定義的validation rule是沒有作用的。另外對于瀏覽器端的驗證(javascript),這個屬性也是沒法控制的。

          這個屬性可以在每個頁面對應的Page Definition 文件中找到,如下圖:

           

           這個屬性可能有的值,見下圖:

          a. SkipValidation=true

          設為true則在form提交過程中會跳過Model層的驗證,直到commit的時候才會進行驗證。

          典型場景:如需要在一張表中輸入很多行信息,用戶可能希望可以在頁面中以任何順序輸入信息,不希望每次table selection事件都會觸發驗證。

          b. SkipValidation=custom

          設為custom的時候,需要開發人員實現一個oracle.binding.BindingContainerValidator的接口的類,并用EL配置,如圖:

           

           這個選擇項給了開發人員更多的空間來應對復雜的業務需求,開發人員可以自定義如何對表單進行驗證。

          c. SkipValidation = skipDataControls

          skipDataControls 選擇項的意思是會跳過data control這個level的驗證,或者說是事務級別的驗證。它只會對當前的binding container中的iterator的current row進行驗證,而不會對其他不相關的提交的數據進行驗證。

          典型場景: 在一個頁面上使用了多個data control,提交一個data control不會驗證同一個頁面中的其他data control中的數據。

          d. SkipValidation=false

          默認值,不會跳過驗證。

          posted on 2011-09-16 13:42 蕭秋水 閱讀(368) 評論(0)  編輯  收藏 所屬分類: ADF

          主站蜘蛛池模板: 南召县| 虞城县| 赣州市| 曲阳县| 炎陵县| 出国| 泗洪县| 宁城县| 南阳市| 洪泽县| 施甸县| 宜春市| 连山| 鹤岗市| 汤阴县| 筠连县| 墨江| 财经| 彰化市| 黔西| 九龙坡区| 江华| 龙川县| 唐河县| 栾城县| 陵川县| 赫章县| 三明市| 定州市| 巧家县| 新宁县| 司法| 洪江市| 阜新| 营口市| 黄平县| 子长县| 浮梁县| 长岛县| 洪雅县| 金平|