Я борюсь со следующей проблемой в веб-приложении, использующем PrimeFaces 6.2 - и да, я прочитал это и это и это и , и wiki , а также ознакомились с демонстрацией простых лиц .
Сценарий:
У меня есть selectOneMenu, который получает его selectItems из боба:
<p:selectOneMenu id="konfiguration" value="#{tpsManager.selectedKonfig}" >
<p:ajax event="change" listener="#{tpsManager.konfigChange}" />
<f:selectItems value="#{tpsManager.konfigurationen}" />
</p:selectOneMenu>
Если значения рассчитываются таким образом с помощью getKonfigurationen () в bean-компоненте, событие change вызывается, если пользователь выбирает элемент и вызывается konfigChange ():
ArrayList konfigurationen = new ArrayList<SelectItem>();
SelectItemGroup g1 = new SelectItemGroup("<Auswertungsbasis>");
g1.setSelectItems(new SelectItem[]{ new SelectItem("id Denver", "Denver" ), new SelectItem("id San Francisco", "San Francisco" ) });
konfigurationen.add(g1);
konfigurationen.add(0, new SelectItem("id new York", "New York" ));
return konfigurationen;
Это хорошо, но, к сожалению, мне нужно динамически создавать selectItems в selectItemGroup, поскольку эти значения предоставляются базой данных. В следующем фрагменте третья строка возвращает массив selectItem и добавляет его в SelectItemGroup g1. Массив содержит только объекты selectItem (содержащие строки) и не содержит нулевых записей.
ArrayList konfigurationen = new ArrayList<SelectItem>();
SelectItemGroup g1 = new SelectItemGroup("<Auswertungsbasis>");
g1.setSelectItems( al.toArray(new SelectItem[al.size()]) );
konfigurationen.add(g1);
konfigurationen.add(0, new SelectItem("id new York", "New York" ));
return konfigurationen;
Проблема:
если пользователь теперь выбирает элемент NO , инициируется событие изменения и вызывается konfigChange () НЕ . Никаких исключений не возникает. В отладчике оба массива выглядят одинаково. У меня нет идей - любая помощь приветствуется!