Dialog <p:dialog> doesn't show using primefaces and facelets
-
01-10-2019 - |
Question
I'm facing a little problem with Primefaces
and Facelets
.
Here's the problem: I got a template file, that will be my base for all my screens.
<p:commandButton value="#{msg.salvar}" action="#{managed.salvar}"
update="cadastroMessages, #{formId}" type="image"
image="../imagens/user_business_add_32.png" />
<p:commandButton value="#{msg.excluir}" action="#{managed.excluir}"
type="image" image="../imagens/user_business_close_32.png"
update="cadastroMessages, #{formId}" />
<p:commandButton value="#{msg.procurar}"
onclick="#{modalConsulta}.show();" type="button" ajax="false" />
</h:panelGrid>
<ui:insert name="conteudo" />
</h:form>
</p:panel>
The file that uses this template:
<ui:param name="managed" value="#{managedAluno}" />
<ui:param name="modalConsulta" value="modalConsultaAluno" />
<ui:param name="formId" value="cadastroAlunoForm" />
<ui:param name="header" value="#{msg.cadastroAlunos}" />
<ui:define name="conteudo">
<h:panelGrid columns="2">
<h:outputText value="#{msg.nome}" />
<h:inputText id="nome" value="#{managedAluno.aluno.nome}" required="true" />
<h:outputText value="#{msg.datanascimento}" />
<p:calendar id="calendario" value="#{managedAluno.aluno.dataNascimento}" />
<h:outputText value="#{msg.responsavel}" />
<h:inputText id="resp" value="#{managedAluno.aluno.responsavel}" />
</h:panelGrid>
</ui:define>
On my index page, I got a <p:menuitem>
that when clicked, will show a dialog for user insert some data, using the code above.
The dialog looks like this
<p:dialog widgetVar="dlg" modal="true">
<ui:include src="/cadastro/cadastroAluno.xhtml" />
</p:dialog>
Using ui:include, two html tags are inserted on my index page, and the worst, the dialog DOESN'T show up!
If i change <ui:include>
for an h1 tag, works fine!
How can i get this work?
Solution
dialog boxes do not work inside panels nor panelGrid. It works inside layout and layoutUnits though. So put your dialog or confirmDialogs OUTSIDE panels or panelGrids.