<h:selectOneMenu id="selectOneMenu" value="#{Bean1.val1}" >
<f:selectItems value="#{Bean1.selectItems}"/>
<a4j:support event="onchange" action="#{Bean1.onSelectOneMenuChange}" reRender="textbox1 , textbox2 , textbox3, textbox4" />
</h:selectOneMenu>
<h:inputText id="textbox1" value="#{Bean1.textbox1}"> </h:inputText>
<h:inputText id="textbox2" value="#{Bean1.textbox2}"> </h:inputText>
<h:inputText id="textbox3" value="#{Bean1.textbox3}"> </h:inputText>
<h:inputText id="textbox4" value="#{Bean1.textbox4}"> </h:inputText>
Bean1.onSelectOneMenuChange()
將(取決於所選(Bean1.val1)
的值)改變的Bean1.textbox1
,Bean1.textbox2
,Bean1.textbox3
和Bean1.textbox4
值。有時,它會改變所有文本框的值,有時它只會改變一些文本框的值。使用A4J:支持的使用h onchange事件:selectOneMenu用於
當用戶更改「selectOneMenu」下拉列表控件中的值時,JSF框架將不會調用更新模型值階段,而是直接調用Bean1.onSelectOneMenuChange()
。之後,所有的文本框都是reRender。因爲未調用更新模型值階段,所以用戶輸入的值永遠不會設置爲Bean1,並且reRender
之後的原始值將顯示在文本框中。
我要問:
我怎樣才能手動調用更新模型內
Bean1.onSelectOneMenuChange()
值階段?如何獲取Bean1.onSelectOneMenuChange()
中的用戶輸入的值並將其設置爲Bean1
的相應字段?另一種方法是隻有reRender那些文本框的值在Bean1.onSelectOneMenuChange()中更新。但是,有很多情況。例如,一個值將改變所有的文本框的值,一個值可能只會改變一些文本框的值。我怎樣纔能有條件地改變?哪種方法更適合可維護性?
更新:
對於第2點,我發現的重新描繪宋健民的可以接受的EL表達式,所以我試圖用
<a4j:support event="onchange" action="#{Bean1.onSelectOneMenuChange}" reRender="#{Bean1.reRenderIDList}" /> .
的Bean1.onSelectOneMenuChange內() ,我根據業務需求將Bean1.reRenderIDList設置爲需要成爲reRender的一組ID。頁面刷新時運行Bean1.getRenderIDList()
。但是,當我在UI中更改<h:selectOneMenu>
的值時,Bean1.getRenderIDList()將永不再運行。因此,該文本框不能是reRender
?
有什麼想法?
是的,有一些將java腳本函數分配給onblur屬性進行一些驗證。如何繞過 onchange事件的驗證階段?我只想在用戶填寫所有數據並按提交按鈕時進行此類驗證。謝謝! –
2010-05-14 02:25:53
^^^對於那些希望限制發送內容的人,嘗試將'ajaxSingle'屬性設置爲'true' http://livedemo.exadel.com/richfaces-demo/richfaces/ajaxAttributes.jsf?c=ajaxattributes&tab=usage – Adam 2011-06-15 19:31:01