簡體   English   中英

IceFaces 1.8中的SelectInputText ValueChangeListener問題

[英]SelectInputText ValueChangeListener Issues in IceFaces 1.8

我正在使用ICEFaces 1.8作為我的應用程序。 我在網格中有一些SelectInputText,如下所示:

<ice:panelGrid columns="4">             
            <ice:selectInputText id="txtId"                             
                         valueChangeListener="#{employeeBean.searchIdListener}" partialSubmit="true"></ice:selectInputText>
            <ice:selectInputText id="txtFirstName"
                         valueChangeListener="#{employeeBean.searchFirstNameListener}" partialSubmit="true"></ice:selectInputText>
            <ice:selectInputText id="txtLastName"
                         valueChangeListener="#{employeeBean.searchLastNameListener}" partialSubmit="true"></ice:selectInputText>
            <ice:selectInputText id="txtPhoneNumber"
                         valueChangeListener="#{employeeBean.searchPhnNbrListener}" partialSubmit="true"></ice:selectInputText>
        </ice:panelGrid>

當我更改上述任何一個SelectInputText的值時,我可以看到所有上述四個ValueChangeListener方法都被執行 - 為什么?

是不是只有執行的方法,其SelectInputText有一些值的變化?

請讓我知道這件事。

它可能正在發生,因為<ice:selectInputText>初始值為NULL,並且第一次部分或完全提交將導致從頁面提交EMPTY字符串

使用空字符串初始化您的selectInputText以避免這種情況,或者您可以在JSF 2.x中添加以下內容,

<context-param>
    <param-name>
         javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
    </param-name>
    <param-value>true</param-value>
</context-param>

另外要添加到Icefaces,它的部分提交有點令人困惑。 它更像是使用部分Ajax / DOM呈現的完整Ajax提交。 在某些情況下,icefaces 1.8將在頁面上執行多個組件,但是它在數據表列,panelSeries等中避免使用它。

我認為這源於對partialSubmit屬性的意圖的誤解以及對valueChangeListener的誤解。

通過單擊提交按鈕提交表單時,可以說,表單中綁定到托管屬性值或在valueChangeListener分配了托管bean方法的所有組件都要求服務器提交,處理和驗證其請求值。 假設驗證階段成功,那些提交的值將傳遞到UPDATE_MODEL階段,其中將調用每個valueChangeListener方法。

基本上,此方法不會像Click或Change事件一樣被視為應用程序事件。

但是,使用Ajax提交,我們可以控制將提交JSF表單中的哪些組件,以及在客戶端收到響應后將重新呈現哪些控件以顯示其新值。 但是, partialSubmit屬性只是與Ajax請求一起使用,以最小化ViewState的大小和性能請求。 從功能partialSubmit這個partialSubmit屬性本身沒有任何實際效果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM