[英]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.