Я использую Primefaces 6.1 и создаю панель в пользовательском интерфейсе: повторите с помощью командной кнопки, но когда я использую свойство pannel closable = "true" с ajax event = "close", он не запускает все методы получения и установки, а также, если япопробуйте удалить одну созданную панель, она не будет отображаться снова при создании во время создания моего компонента поддержки, но он не будет отображаться в пользовательском интерфейсе, тот же сценарий для второй последней панели удаляет все созданные панели и возвращает их после восстановления.
Вот код xhtml:
<p:outputPanel binding="#{chatbotNewsAlertBean.pullMessagesPanel}"
id="pullMessagesPanel">
<ui:repeat value="#{chatbotNewsAlertBean.pullMessages}"
var="pullMessage" varStatus="status">
<p:panel id="pullMessage" toggleable="true" closable="true"
collapsed="true" visible="true"
header="Pull Message #{status.index+1}">
<p:ajax event="close"
listener="#{chatbotNewsAlertBean.onClose(status.index)}" />
</p:panel>
</ui:repeat>
</p:outputPanel>
<p:column style="text-align: right;">
<p:commandButton id="addNewPullMessageButton" value="Add Pull Message"
action="#{chatbotNewsAlertBean.initializeNumberOfForms()}"
update="pullMessagesPanel nextButtonText buttonPosition" />
</p:column>
И мой бэкэнд-компонент:
@ManagedBean(name = "chatbotNewsAlertBean")
@Persistent
@ViewScoped
public class ChatbotNewsAlertManagedBean extends ChatbotNewsAlertBean
{public void initializeSubsurveysList()
{
if (this.getNumberOfPullMessages() == null)
{
this.setNumberOfPullMessages(0);
}
numberOfPullMessages = numberOfPullMessages + 1;
pullMessages.add(new PullMessagesManagedBean());
log.info("PULL MESSAGES SIZE:" + pullMessages.size());
}
/**
* thi method will delete single entry from the list of pul messages
*
* @param index
* of the selected pull message to be deleted
*/
public void onClose(int index)
{
pullMessages.remove(index);
numberOfPullMessages = numberOfPullMessages - 1;
log.info("PULL MESSAGES SIZE:" + pullMessages.size() + " DELETING INDEX VLUE AT:" + index);
log.info("PULL MESSAGES SIZE:" + pullMessages.size());
}
}
Я не знаю, почему этот вызов ajax создает проблемы с событием close.