Primefaces como faço pra fechar um dialog

Olá,

ao clicar no botão

 <p:commandButton value="Modal" onclick="dlg2.show();" type="button"/>

aparece o dialog mais não consigo fechar esse dialog.

alguém poderia me ajudar …

agradeço

abs


<?xml version='1.0' encoding='UTF-8' ?>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <p:layout fullPage="true">


            <p:layoutUnit position="left" width="200">
                <h:outputText value="Letf text"/>
            </p:layoutUnit>

            <p:layoutUnit position="center" scrollable="true">
                <p:commandButton value="Basic" onclick="dlg1.show();" type="button"/>
                <p:commandButton value="Modal" onclick="dlg2.show();" type="button"/>
                <p:commandButton value="Effects" onclick="dlg3.show();" type="button"/>


                <p:dialog header="Basic Dialog" widgetVar="dlg1">
                    <h:outputText value="Resistance to PrimeFaces is futile!" />
                </p:dialog>

                <p:dialog header="Modal Dialog" widgetVar="dlg2" modal="true" height="200">
                    <h:outputText value="This is a Modal Dialog." />
                    <p:commandButton value="Saida" onclick="dlg2.hide();" type="button"/>
                </p:dialog>

                <p:dialog header="Effect Dialog" widgetVar="dlg3" showEffect="bounce" hideEffect="explode" height="200">
                    <h:outputText value="This dialog has cool effects." />
                </p:dialog>
            </p:layoutUnit>

        </p:layout>
    </h:body>
</html> 
widgetVar="nomedlg"

Fecho com:

oncomplete="nomedlg.hide()"

Comigo funciona assim.

xD~~

o que fiz e ainda não deu certo não fecha o dialog aberto


<p:dialog header="Modal Dialog" widgetVar="dlg2" modal="true" height="200">
                    <h:outputText value="This is a Modal Dialog." />
                  <p:commandButton  oncomplete="dlg2.hide()"  type="button" value="Saida"/>
                </p:dialog>
<?xml version='1.0' encoding='UTF-8' ?>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <p:layout fullPage="true">


            <p:layoutUnit position="left" width="200">
                <h:outputText value="Letf text"/>
            </p:layoutUnit>

            <p:layoutUnit position="center" scrollable="true">
                <p:commandButton value="Basic" onclick="dlg1.show();" type="button"/>
                <p:commandButton value="Modal" onclick="dlg2.show();" type="button"/>
                <p:commandButton value="Effects" onclick="dlg3.show();" type="button"/>


                <p:dialog header="Basic Dialog" widgetVar="dlg1">
                    <h:outputText value="Resistance to PrimeFaces is futile!" />
                </p:dialog>

                <p:dialog header="Modal Dialog" widgetVar="dlg2" modal="true" height="200">
                    <h:outputText value="This is a Modal Dialog." />
                  <p:commandButton  oncomplete="dlg2.hide()"  type="button" value="Saida"/>
                </p:dialog>

                <p:dialog header="Effect Dialog" widgetVar="dlg3" showEffect="bounce" hideEffect="explode" height="200">
                    <h:outputText value="This dialog has cool effects." />
                </p:dialog>
            </p:layoutUnit>

        </p:layout>
    </h:body>
</html> 

Eu não tive boas experiências com <p:dialog> modal dentro de <p:layout>. O <p:layout> faz com que ele crie o css que bloqueia o acesso ao que está no fundo do dialog também na frente… algo a ver com z-index.

Só funcionou depois que declarei todos os p:dialog fora do p:layout , o seu caso ficaria assim:

<?xml version='1.0' encoding='UTF-8' ?>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <p:layout fullPage="true">


            <p:layoutUnit position="left" width="200">
                <h:outputText value="Letf text"/>
            </p:layoutUnit>

            <p:layoutUnit position="center" scrollable="true">
                <p:commandButton value="Basic" onclick="dlg1.show();" type="button"/>
                <p:commandButton value="Modal" onclick="dlg2.show();" type="button"/>
                <p:commandButton value="Effects" onclick="dlg3.show();" type="button"/>


                <p:dialog header="Basic Dialog" widgetVar="dlg1">
                    <h:outputText value="Resistance to PrimeFaces is futile!" />
                </p:dialog>
                <p:dialog header="Effect Dialog" widgetVar="dlg3" showEffect="bounce" hideEffect="explode" height="200">
                    <h:outputText value="This dialog has cool effects." />
                </p:dialog>
            </p:layoutUnit>

        </p:layout>
    </h:body>
    
     <p:dialog header="Modal Dialog" widgetVar="dlg2" modal="true" height="200">
                    <h:outputText value="This is a Modal Dialog." />
                    <p:commandButton value="Saida" onclick="dlg2.hide();" type="button"/>
                </p:dialog>
</html> 

tentei executar o exemplo que vc passou mais me deu erro abaixo:


16/03/2011 00:33:31 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet FacesServlet threw exception
java.lang.IllegalArgumentException: null source
	at java.util.EventObject.&lt;init&gt;(Unknown Source)
	at javax.faces.event.SystemEvent.&lt;init&gt;(SystemEvent.java:67)
	at javax.faces.event.ComponentSystemEvent.&lt;init&gt;(ComponentSystemEvent.java:69)
	at javax.faces.event.PostRestoreStateEvent.&lt;init&gt;(PostRestoreStateEvent.java:69)
	at com.sun.faces.lifecycle.RestoreViewPhase.deliverPostRestoreStateEvent(RestoreViewPhase.java:256)
	at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:245)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
	at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:107)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Unknown Source)

muito estranho o erro anterior só da quando eu copio o seu exemplo para dentro do Eclipse

faço ctrl c + ctrl v e rodo da o erro.

mais se eu altero o codigo anterior com suas alterações não da o erro???

cada vez entendo menos esse mundo windows…

e ainda não consegui saber por que qdo dou ctrl + espaço

em cima de uma tag <p:dialog

me da a mensagem No Default proposals

já que todas os jars estão lib …mais uma que não entendo ??? k droga>

Está parecendo mais algo a ver com o server. Eu testei usando o tomcat 6 e funcionou, pelo que li nos fóruns muita gente teve problema parecido com o seu usando a versão 7.
Trabalhei em um projeto grande com o Primefaces e Tomcat conseguimos minimizar alguns desses erros assim (usando o tomcat 6):

  1. Nos jars NÃO inclua o javax.el.jar , na instalação do tomcat ele tem sua própria versão e dá uns conflitos bem doidos.
  2. Quando der algum erro muito estranho vá nos Servers e faça o ‘Clean Tomcat Work Directory’
  3. Em último caso exclua o teu projeto dos Servers e inclua novamente.

Os jars que utilizei no teste foram os seguintes:

antlr-2.7.6.jar
c3p0-0.9.1.jar
common-annotations.jar
commons-beanutils-core-1.8.0.jar
commons-collections-3.1.jar
commons-digester.jar
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
commons-lang-2.6.jar
commons-logging-1.1.1.jar
dom4j-1.6.1.jar
ehcache-1.5.0.jar
el-ri.jar
ezmorph-1.0.6.jar
google-api-translate-java-0.94.jar
groovy-all-1.5.5.jar
hibernate3.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
hibernate-jpamodelgen-1.0.0.Final.jar
hibernate-validator-4.1.0.Final.jar
iText-2.1.7.jar
jasperreports-3.7.3.jar
javassist-3.9.0.GA.jar
javax.el.jar_CONFLITO (Só inclua se não for tomcat)
jsf-api.jar
jsf-impl.jar
json-rpc-1.0.jar
jstl-1.2.jar
jta-1.1.jar
jtds-1.2.5.jar
junit-4.8.2.jar
log4j-1.2.15.jar
mail.jar
ojdbc14.jar
poi-3.6-20091214.jar
primefaces-2.2.1.jar
quartz-all-1.8.4.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar
sqljdbc4.jar
validation-api-1.0.0.GA.jar

Ok?

Obrigado, pelo retorno.

Mais não sei quando problema para colocar uma tela no ar o usuário final nem imagina
o que a gente passa. Essas integração entre framework é que mata.

Não consigo fazer autocomplete não aparce nada de comando qdo faço

<p: ctrl + espaço da mensagem No Default Proposals

Já aconteceu isso com vc ???

muito estranho já abaxei duas vezes o eclipse helios pra 64 bis e 32 bits e nada…

não sei mais o que fazer não sei se meus jar estão com bug …muito estranho…

abs>

Estava com o mesmo problema quando atualizei o Eclipse Helios de SR1 para SR2.

Consegui fazer voltar a funcionar o content assist no Eclipse Helios assim:

No projeto, em Properties / Project Facets e marquei a opção ‘Java Server Faces 2.0’

Ele pediu uma configuração extra de Library, como já tenho os jars marquei a opção ‘Disable Library Configuration’

Voltou ao normal…

Obrigado.

vou fazer isso pra ver se comigo funciona…

abs

É só jogar os dialog para fora do layout, bem simples, outra coisa que você poderia fazer é criar um template e importar o modelo, mas nesse caso no commandButton utilize type=“push”;
Crie um arquivo .xhtml copie e cole o código abaixo e execute no glassfish ( testado com primefaces-2.2.1.jar).

<?xml version='1.0' encoding='UTF-8' ?>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <p:layout fullPage="true">


            <p:layoutUnit position="left" width="200">
                <h:outputText value="Letf text"/>
            </p:layoutUnit>

            <p:layoutUnit position="center" scrollable="true">
                <p:commandButton value="Basic" onclick="dlg1.show();" type="button"/>
                <p:commandButton value="Modal" onclick="dlg2.show();" type="button"/>
                <p:commandButton value="Effects" onclick="dlg3.show();" type="button"/>
            </p:layoutUnit>

        </p:layout>
        
         <p:dialog header="Basic Dialog" widgetVar="dlg1">
                    <h:outputText value="Resistance to PrimeFaces is futile!" />
                </p:dialog>

                <p:dialog header="Modal Dialog" widgetVar="dlg2" modal="true" height="200">
                    <h:outputText value="This is a Modal Dialog." />
                    <p:commandButton value="Saida" onclick="dlg2.hide();" type="button"/>
                </p:dialog>

                <p:dialog header="Effect Dialog" widgetVar="dlg3" showEffect="bounce" hideEffect="explode" height="200">
                    <h:outputText value="This dialog has cool effects." />
                </p:dialog>
    </h:body>
</html> 

<p:dialog header="Modal Dialog" widgetVar="dlg2" modal="true" height="200"> <h:outputText value="This is a Modal Dialog." /> <p:commandButton oncomplete="dlg2.hide()" type="button" value="Saida"/> </p:dialog>

o seu problema é que voce declara o type=“button” no seu commandButton, retire isso e teste.