Я переношу приложение с Primefaces 3.5 на последнюю версию, на самом деле 6.2. У меня проблема с событиями при закрытии и на вкладках изменения. У меня есть динамически созданные вкладки. В TabChangeEvent tabClientId отличается от UIComponent, но он по-прежнему работает, и я могу правильно переключаться между вкладками. Настоящая проблема заключается в том, что когда я закрываю вкладку, тогда в contextEvent у меня есть tabClientId = [object Object], а tabIndex имеет значение null, поэтому приложение взрывается здесь:
int tabindex = Integer.parseInt (params.get (clientId + "_tabindex"));
Кто-нибудь знает, как это исправить?
<p:tabView var = "tabview" value = "#{tabBean.tabs}"
binding = "#{tabBean.tabGlTabView}" id = "panelGl"
widgetVar = "panelGlJs" dynamic = "true" styleClass = "contentPanel"
activeIndex = "#{tabBean.index}">
<p:tab title = "#{tab.title}"
closable = "true">
<ui:include src = "#{tabBean.tab}" />
</p:tab>
<p:ajax event = "tabChange"
onstart = "setActive()"
update = "@(this)" />
<p:ajax event = "tabClose"
listener = "#{tabBean.onTabClose}" />
</p:tabView>
Также я бы клонировал этот проект: github.com/primefaces/primefaces-test и создал небольшой воспроизводимый тестовый пример. Если вы можете воспроизвести это, я предлагаю сообщить об ошибке на странице PF GitHub.
Я не прикрепляю код Java, потому что он запускается после TabViewRenderer, поэтому код для tabBean.close () никогда не запускается, потому что приложение взорвалось раньше.
Затем вы должны хотя бы опубликовать код, как сделать вкладки динамическими. И минимальный воспроизводимый пример всегда требуется и лучше всего делать / создавать





Должен ли ваш
update = "@(this)"бытьupdate = "@this"? И вы не разместили Java-код для своего события tabBean.close ().