Я разместил тот же вопрос на форуме Primefaces (как сказал Томми Чан), и кто-то ответил на это:
Вы, вероятно, размещаете свой диалог в обновляемой форме, которая не является,Никогда не обновляйте диалоговое окно, только содержимое диалогового окна
Я пытался делать это, пока не увидел, что все мои диалоговые окна имеют атрибут "рендеринг", поступающий с сервера (просто посмотрите первый xml), у меня естьв этом приложении много диалогов, и некоторые из них имеют отношение к другим (на сервере), последние находятся в одной форме.
Я сделал что-то другое, я только создал этот код JavaScript:
function removerDialogo(id) {
setTimeout(function() {
removerDialogoAposIntervalo(id);
}, 100);
}
function removerDialogoAposIntervalo(id) {
id = id.replace(':', '\\:');
jQuery('div.ui-dialog')
.find('#' + id)
.parent().eq(1)
.remove();
}
и вызвал это в диалоговом окне атрибута onShow:
<p:dialog widgetVar="#{idPopup}" id="#{idPopup}" modal="#{popup.modal}"
draggable="#{popup.modal}" rendered="#{popup.visivel}"
visible="#{popup.visivel}" closeOnEscape="false" closable="false"
header="#{titulo}" resizable="false" styleClass="autoWidthDialog"
showEffect="fade" hideEffect="fade" onShow="removerDialogo(this.id)">
Мне не нравится делать такие вещи, но я не могу найти лучший способ решить эту проблему ...Если кто-нибудь даст мне лучшее решение, я буду благодарен