Я создаю dataTable с двумя dataTable внутри :).PrimeFaces dataTable не визуализирует, когда существует атрибут привязки
Но на этот раз у меня возникли проблемы с отображением, когда я пытаюсь использовать атрибут привязки в h: panelGroup, который обертывает первый dataTable. Я использую привязку, чтобы помочь обновить только панель Group, например, BalusC рассказала в this question. Когда я удаляю атрибут привязки, dataTable отображается нормально, но, конечно же, ничего не отображается с помощью тегов f: ajax внутри dataTables.
Вот XHTML:
<ui:component>
<h:panelGroup>
<h:panelGroup layout="block;" id="#{id}"
binding="#{painelTabelaContatos}" rendered="true">
<p:dataTable id="tabela#{id}"
value="#{modeloTabelaContatos.listaDeContatos}" var="contato"
selectionMode="single"
rowSelectListener="#{controladorTabelaContatos.processarSelecaoLinha}"
rowUnselectListener="#{controladorTabelaContatos.processarDeselecaoLinha}"
selection="#{modeloTabelaContatos.contatoSelecionado}">
<p:column headerText="Contatos">
<hrgi:editableText style="width:100%" value="#{contato.descricao}" />
</p:column>
<p:column headerText="Telefones">
<h:dataTable value="#{contato.telefones}" var="telefone">
<h:column>
<h:inputText value="#{telefone}" />
</h:column>
<h:column>
<h:graphicImage library="img" name="default_trash.png"
style="cursor:pointer;">
<f:ajax event="click" render=":#{painelTabelaContatos.clientId}"
listener="#{controladorTabelaContatos.removerTelefone(contato, telefone)}" />
</h:graphicImage>
</h:column>
</h:dataTable>
</p:column>
<p:column headerText="e-mails">
<h:dataTable value="#{contato.emails}" var="email">
<h:column>
<h:inputText value="#{email}" />
</h:column>
<h:column>
<h:graphicImage library="img" name="default_trash.png"
style="cursor:pointer;">
<f:ajax event="click" render=":#{painelTabelaContatos.clientId}"
listener="#{controladorTabelaContatos.removerEmail(contato, email)}" />
</h:graphicImage>
</h:column>
</h:dataTable>
</p:column>
<p:column>
<h:graphicImage library="img" name="default_trash.png"
style="cursor:pointer;">
<f:ajax render=":#{painelTabelaContatos.clientId}" event="click"
listener="#{controladorTabelaContatos.removerContato(contato)}" />
</h:graphicImage>
</p:column>
</p:dataTable>
</h:panelGroup>
<h:panelGroup layout="block">
<p:commandButton value="ADICIONAR CONTATO" update="#{id}"
immediate="true"
action="#{controladorTabelaContatos.adicionarContato}" />
<p:commandButton value="ADICIONAR TELEFONE" update="#{id}"
immediate="true"
action="#{controladorTabelaContatos.adicionarTelefone}" />
<p:commandButton value="ADICIONAR E-MAIL" update="#{id}"
immediate="true"
action="#{controladorTabelaContatos.adicionarEmail}" />
</h:panelGroup>
</h:panelGroup>
</ui:component>
Я уже пытался удалить час: DataTables, которые находятся внутри р: DataTable, но без успеха. Этот компонент представляет собой только вкладку PrimeFaces, и эта вкладка находится в диалоговом окне PrimeFaces. Может кто-нибудь объяснить мне, почему это происходит?
Вы упомянули, что это сработало? Единственное различие заключается в том, что теперь вы назначаете '' динамический идентификатор вместо статического идентификатора. Возможно, идентификатор поступает из источника, который больше не существует, когда вы отправляете запрос ajax? –
BalusC
Была моя ошибка. Я сделал это неправильно. – brevleq
Молодец, хорошо, что вы разместили его как ответ :) – BalusC