我遇到了PrimeFaces的問題。這裏是我的XHTML代碼:PrimeFaces selectOneMenu在valueChangeListener和ajax監聽器中都有空的新值
<p:selectOneMenu value="#{gCnewObjectBean.grille.branche}"
valueChangeListener="#{gCnewObjectBean.brancheChangedListener}"
update=":contentform :popup">
<f:selectItems value="#{gCnewObjectBean.branche}" />
<p:ajax update=":contentform :popup"
listener="#{gCnewObjectBean.brancheChangedListener}" />
</p:selectOneMenu>
這裏是我的豆代碼:
public void brancheChangedListener(ValueChangeEvent event) {
Integer branche = (Integer) event.getNewValue();
// do populate the second select menu based on this value
}
public void brancheChangedListener(AjaxBehaviorEvent event) {
SelectOneMenu selectMenu = (SelectOneMenu) event.getSource();
Integer branche = (Integer) selectMenu.getSubmittedValue();
// do populate the second select menu based on this value
}
生成的HTML代碼是有點怪與primefaces的HTML選擇組件是隱藏的。但是,如果我與螢火蟲看到它,它看起來像這樣:
<select id="branche_input" name="branche_input">
<option value="0"></option>
<option value="1">Prestations prévoyance professionnelle</option>
<option value="2">Prestations prévoyance privée</option>
<option value="3">Prestations PRIRENT</option>
<option value="4">Gestion prévoyance professionnelle</option>
</select>
這個代碼是測試由BalusC上this post描述的兩種解決方案(valueChangeListener
和f:ajax
)的方式。
當我改變選擇菜單中的值時,兩個監聽器都被觸發,首先是valueChangeEvent
,然後是AjaxBehaviorEvent
,這完全是我基於BalusC後期發現的。但是這兩種bean方法對於新值都會得到一個「空值」(使用調試器,我可以看到ValueChangeEvent
中的舊值爲「0」,根據我的selectItems,這是正確的)。
解決此問題的任何線索?我真的不明白,我看見我使用幾個時間在這個網站的代碼...
技術信息:JBoss的EAP 6.0,鑽嘴魚科2.1.7-JBoss的,PrimeFaces 4.0
編輯:我是想知道這是否是JBoss中嵌入的jsf-impl庫中的一個bug。我更新到Mojarra 2.1.18-jboss,但問題是嚴格相同的:一個null
值通過ajax監聽器放入我的grille
對象中,並且getNewValue()
對象也返回對象的valueChangeEvent
。
我的代碼中存在兩個不同的問題,一個用我提供的代碼不可見。你對'getSubmittedValue()'是正確的,它確實總是'null',因爲在更新模型值階段之後觸發'AjaxBehaviorEvent'。我必須直接從我的模型中檢索選定的ID。至於我的'selectItems',那不是問題,因爲我的'getBranche()'方法有這樣的簽名:'public List getBranche(){' –
Wis
2014-09-23 08:15:12
問題的第二部分是我的'p:dialog'是不以任何形式在頁面中。出於某些原因,我必須將我的'p:confirmDialog'放在任何形式之外。我認爲我應該對'對話框做同樣的事情,這確實是一個壞主意。在表單之外,沒有值被提交給服務器。從我提供的代碼中看不到這部分。 – Wis 2014-09-23 08:18:01