p:selectOneMenu中未触发任何更改事件

问题描述 投票:1回答:1

我正在使用PrimeFaces 6.2在Web应用程序中遇到以下问题 - 是的,我已经阅读了thisthis以及thisthat以及wiki并且也看了primefaces showcase

场景:我有一个selectOneMenu从bean获取其selectItems:

<p:selectOneMenu id="konfiguration" value="#{tpsManager.selectedKonfig}" > 
    <p:ajax event="change" listener="#{tpsManager.konfigChange}" />
    <f:selectItems value="#{tpsManager.konfigurationen}" /> 
</p:selectOneMenu>​

如果bean中的getKonfigurationen()计算了这样的值,则在用户选择一个项并调用konfigChange()时会触发change-event:

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;

这很好,但不幸的是我需要动态地在selectItemGroup中创建selectItems,因为这些值是由数据库提供的。在下面的代码片段中,第三行返回一个selectItem数组,并将其添加到SelectItemGroup g1。该数组仅包含selectItem-objects(包含字符串)和NO空条目。

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;

问题:如果用户现在选择了一个项目,则不会触发更改事件,也不会调用konfigChange()。没有例外。在调试器中,两个阵列看起来都是理想的。我没有想法 - 任何帮助表示赞赏!

jsf primefaces
1个回答
0
投票

在Stackoverflow中创建[mcve]是一种很好的做法。我认为你遇到的问题与commandButton/commandLink/ajax action/listener method not invoked or input value not set/updated中的#4有关。但我只能确定你展示了[mcve]。请在那里包括范围注释。

© www.soinside.com 2019 - 2024. All rights reserved.