Я действительно застрял в этом в течение последних 2 дней, и я изо всех сил пытаюсь понять, как Primefaces обновляет компоненты пользовательского интерфейса на клиенте на основе их идентификатора.JSF 2/Primefaces p: ajax не обновляет панель после события onchange
У меня есть h: selectOneMenu с подсчетом количества отображаемых панелей. Каждая панель p: будет содержать панель Grid с многочисленными элементами формы. Событие onchange на выпадающем списке запущено, и я вижу счет в управляемом компоненте. Я не вижу панелей, динамически растущих на стороне клиента. Я думаю, что что-то не так с моими параметрами p: ajax, но я не полностью понимаю, как это работает. здесь находится соответствующий код:
<h:selectOneMenu id="numapps" value="#{mbean.appCount}">
<f:selectItem itemLabel="1" itemValue="1" />
<f:selectItem itemLabel="2" itemValue="2" />
<f:selectItem itemLabel="3" itemValue="3" />
<f:selectItem itemLabel="4" itemValue="4" />
<f:selectItem itemLabel="5" itemValue="5" />
<p:ajax update="appsContainer" event="change"
listener="#{mbean.onChangeNumApps()}" />
</h:selectOneMenu>
<p:panel id="appsContainer" >
<p:panel header="Application" id="appsPane" value="#{mbean.submittedApps}" var="app" multiple="true">
ПредставленныйApps - это список, содержащий элементы панели. Вот мой MBean слушатель:
public void onChangeNumApps()
{
List<Apps> c = new ArrayList<Apps>();
logger.info("on change event fired");
logger.info("new value is "+mbean.getAppCount());
for (int i=0;i < mbean.getAppCount();i++)
{
c.add(new App());
}
mbean.setSubmittedApps(c);
}
Я смешивания р: Ajax с ч: SelectOne, потому что я не мог получить р: SelectOne работает по какой-то причине - возможно, из-за столкновения CSS с моей таблицы стилей ??