我正在使用MyFaces/Primefaces,並且遇到了使用ajax獲取信息的問題。 我的頁面包含面板列表,在每個面板中,用戶可以在下拉列表中選擇值,然後單擊將更新其面板(Ajax)的複選框,我希望我很清楚。 這是我的代碼:JSF2:無法從java代碼中的HtmlSelectOneMenu獲取數據
<p:panel>
...
<h:selectOneMenu id="beanSet" value="#{myBean.selectedSet}">
<f:selectItem itemLabel=" " noSelectionOption="true" />
<f:selectItems value="#{langSet}" />
</h:selectOneMenu>
<h:selectBooleanCheckbox
id="chkbxBeanSet"
value="#{myBean.selectedSetChkbx}" >
<p:ajax
event="click" render="@parent"
listener="#{action.updateSet}"
execute="@form"
immediate="true"
/>
</h:selectBooleanCheckbox>
...
<p:panel>
在這裏,我的Java代碼:
public void updateSet(AjaxBehaviorEvent e) {
UIComponent source = (UIComponent)e.getSource();
System.out.println("Value:"+((HtmlSelectBooleanCheckbox)source).getValue());
UIComponent parent = source.getParent();
List<UIComponent> children = parent.getChildren();
HtmlSelectOneMenu lvSet = (HtmlSelectOneMenu)parent.findComponent("beanSet");
Object value = lvSet.getValue();
System.out.println("value: " + value);
我得到的beanSet成分,但我無法得到它的價值。據我所知,getValue調用未設置的myBean的getSelectedSet(它在請求範圍內)。 我不明白如何使用ajax獲取下拉列表中的選定值。 另一種方式是發佈所有的表單,但在這種情況下,我必須確定哪個複選框被用戶點擊... 如果有人能解釋我在哪裏我錯了?
謝謝BalusC,現在它的工作原理:-)))) – 893 2012-03-18 21:33:26