Я работаю с MyFaces / Primefaces, и у меня проблема с получением информации с использованием ajax.Моя страница содержит список панелей, внутри каждой панели пользователь может выбрать значение в раскрывающемся списке и щелкнуть по флажку, который обновит его панель (Ajax), надеюсь, у меня все ясно.Это мой код:
<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 вызывает getSelectedSet из myBean, который не установлен (это находится в области запроса).Я не понимаю, как я могу получить выбранное значение в раскрывающемся списке с помощью ajax.Другой способ - опубликовать всю форму, но в этом случае я должен определить, какой флажок был нажат пользователем ... Если кто-то может объяснить мне, где я ошибаюсь?