[RESOLVIDO] Primefaces: modal com p:dialog

Boa tarde!

Tenho uma página xhtml, com um botão “Teste” que chama um p:dialog com o MODAL ativo. Porém, quando ele surge, o modal trava toda a aplicação, inclusive o próprio p:dialog, não sendo possível sequer fechá-lo.

O que estou fazendo de errado?

Página xhtml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.org/ui"
	template="/WEB-INF/template/template.xhtml">

	<ui:define name="conteudo">
		<h:head>

		</h:head>

		<h:body>

			<h:form id="form">

				<p:dataTable id="clientes" var="cliente"
					value="#{clienteController.listaClientes}" rowKey="#{cliente.nome}"
					selectionMode="single">

					<p:column headerText="Nome">
						<h:outputText value="#{cliente.nome}" />
					</p:column>

					<p:column headerText="Cidade">
						<h:outputText value="#{cliente.cidade}" />
					</p:column>

					<p:column headerText="Celular">
						<h:outputText value="#{cliente.telefone1}" />
					</p:column>

					<p:column headerText="Telefone">
						<h:outputText value="#{cliente.telefone2}" />
					</p:column>

					<p:column headerText="Observações">
						<h:outputText value="#{cliente.observacoes}" />
					</p:column>

					<p:column headerText="Sexo">
						<h:outputText value="#{cliente.sexo}" />
					</p:column>

				</p:dataTable>

				<br />

				<p:commandButton value="Adicionar Novo Cliente" icon="ui-icon-disk"
					action="#{clienteController.prepararAdicionarCliente}" />

				<p:commandButton value="Teste" onclick="dialogGerCliente.show()" />

			</h:form>

			<p:dialog id="modalDialog" header="Gerenciamento de Clientes"
				widgetVar="dialogGerCliente" modal="true" height="200" width="400"
				showEffect="side" hideEffect="explode">
				<h:form>
					<h:outputText value="Nome: " />
				</h:form>
			</p:dialog>

		</h:body>
	</ui:define>
</ui:composition>

Desde já, agradeço a ajuda.

Ninguém?!

Bom dia lksJF

Fiz o meu Trabalho de conclusão de curso usando o Primefaces e também tive problemas com os dialogs. A tela ficava travada também.
Para resolver tirei os atributos showEffect e hideEffect dos meus dialogs.

Deixe seu dialog assim:

<p:dialog id="modalDialog" header="Gerenciamento de Clientes" widgetVar="dialogGerCliente" modal="true" height="200" width="400">

Qualquer coisa entre em contato.

Att

Bom dia JoaoLuizSK,

Fiz as correções sugeridas (remover os atributos showEffect e hideEffect) mas ainda não funcionou.

O p:dialog continua travando toda a tela…

Mais alguma sugestão?!

Tenta colocar o type=“button” no teu botão que abre a modal.

<p:commandButton value="Teste" onclick="dialogGerCliente.show()" type="button"/>

Olá edubiss,

Tentei sua sugestão aqui e ainda não funcionou…

Mais alguma ideia?

Minha outra sugestão seria colocar o teu p:dialog fora da tag ui:define.

Ve se resolve.

Tentei também e segue sem solução…

Rapaz comigo deu isso também, e descobrir a fonte do problema que era a maneira do facelet que eu estava usando. Tente usar sem só pra ver se vai dá certo.

Testa com as alterações que fiz abaixo.

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.org/ui"
	template="/WEB-INF/template/template.xhtml">

	<ui:define name="conteudo">
		<h:head>

		</h:head>

		<h:body>

			<h:form id="form">

				<p:dataTable id="clientes" var="cliente"
					value="#{clienteController.listaClientes}" rowKey="#{cliente.nome}"
					selectionMode="single">

					<p:column headerText="Nome">
						<h:outputText value="#{cliente.nome}" />
					</p:column>

					<p:column headerText="Cidade">
						<h:outputText value="#{cliente.cidade}" />
					</p:column>

					<p:column headerText="Celular">
						<h:outputText value="#{cliente.telefone1}" />
					</p:column>

					<p:column headerText="Telefone">
						<h:outputText value="#{cliente.telefone2}" />
					</p:column>

					<p:column headerText="Observações">
						<h:outputText value="#{cliente.observacoes}" />
					</p:column>

					<p:column headerText="Sexo">
						<h:outputText value="#{cliente.sexo}" />
					</p:column>

           <f:facet name="footer">  
	   <p:commandButton value="Adicionar Novo Cliente" icon="ui-icon-disk" action="#{clienteController.prepararAdicionarCliente}" /> ||
            <p:commandButton value="Teste" onclick="dialogGerCliente.show()"  update=":form:display"/>
            </f:facet>  

				</p:dataTable>

				<p:dialog id="modalDialog" header="Gerenciamento de Clientes"
				widgetVar="dialogGerCliente" modal="true" height="200" width="400"
				showEffect="side" hideEffect="explode">

				<h:panelGrid id="display" columns="2" cellpadding="4">  
					<h:outputText value="Nome: " />
				</h:panelGrid> 
			</p:dialog>
                               
			</h:form>
		</h:body>
	</ui:define>
</ui:composition>

aprendizweb, usei o seu código e continua apresentando o mesmo problema…

O p:dialog continua travando toda a tela.

=/

[code]ui:composition xmlns=“http://www.w3.org/1999/xhtml
xmlns:h=“http://java.sun.com/jsf/html
xmlns:f=“http://java.sun.com/jsf/core
xmlns:ui=“http://java.sun.com/jsf/facelets
xmlns:p=“http://primefaces.org/ui
template="/WEB-INF/template/template.xhtml">

<ui:define name="conteudo"> [/code]

tente fazer sem essa parte

Tente dessa forma:

			&lt;p:dialog widgetVar="mensagemPrivada" id="mpid" header="Mensagem privada"
				modal="true" appendToBody="true" resizable="false" draggable="false"&gt;
2 curtidas

Boa tarde Marcelo de Andrade!

Fiz as correções que sugeriu e funcionou perfeitamente!

Agora o p:dialog está funcionando, travando apenas o “restante da tela” e deixando-o livre.

Agradeço a todos que participaram e contribuíram.

Vlw!
:smiley:

1 curtida

[quote=lksJF]Boa tarde Marcelo de Andrade!

Fiz as correções que sugeriu e funcionou perfeitamente!

Agora o p:dialog está funcionando, travando apenas o “restante da tela” e deixando-o livre.

Agradeço a todos que participaram e contribuíram.

Vlw!
:smiley: [/quote]

Valeu mesmo galera, isso sempre nos ajuda, e valeu ao Marcelo de Andrade, matou a charada, comigo aconteceu a mesma coisa, e a única diferença era a bendita propriedade do draggable que faltava, e o pior estava dando erro de js no firebug!

At++
Jesus

1 curtida