В p: selectOneMenu не сработало событие изменения - PullRequest
1 голос
/ 14 марта 2019

Я борюсь со следующей проблемой в веб-приложении, использующем 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 () НЕ . Никаких исключений не возникает. В отладчике оба массива выглядят одинаково. У меня нет идей - любая помощь приветствуется!

1 Ответ

0 голосов
/ 14 марта 2019

В Stackoverflow рекомендуется создавать [mcve]. Я думаю, что проблема, с которой вы столкнулись, связана с # 4 в commandButton / commandLink / ajax action / listener метод не вызван или входное значение не установлено / обновлено . Но я могу быть уверен только тогда, когда вы показали [mcve]. Пожалуйста, включите аннотации области там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...