<p:dialog>

5 respostas
E

Bom dia pessoal.
Estou com o seguinte problema, na minha página tenho um botao ‘ok’, que ao ser clicado chama um ‘dialog’. Nesse ‘dialog’ tem uma tabela, cada item de uma tabela é um commandLink, quando clico nesse commandLink simplesmente fecha o dialog, eu precisaria que ele ‘setasse’ a pessoa no Bean.
Se alguém puder me ajudar ou tiver uma opinião ai eu agradeço.

5 Respostas

F

você tem uma propriedade commandLink chamado ajax. tenta por ele para “false” e posta posta o resultado.

E

Fábio o meu código esta assim:

&lt;p:dialog id="dlgPacientes" header="Resultado da pesquisa" widgetVar="dtPacientes"
				 	modal="true" width="1000" height="500" &gt;
				&lt;h:form id="formDl"&gt;
    				&lt;p:dataTable id="tbl" var="p" value="#{bpaiBean.pacientes}" 
    						 	emptyMessage="NENHUM PACIENTE ENCONTRADO" &gt;
    						   
        				&lt;p:column style="width:25px"&gt;  
        					&lt;f:facet name="header"&gt;PACIENTE&lt;/f:facet&gt;
        					&lt;h:commandLink actionListener="#{bpaiBean.teste}" &gt;
        						&lt;h:outputText value="#{p.pessoa.nome}" /&gt;
        						&lt;f:setPropertyActionListener target="#{bpaiBean.bpai.paciente}" value="#{p}" /&gt;
        					&lt;/h:commandLink&gt;
        				&lt;/p:column&gt;  
  
        				&lt;p:column style="width:25px; text-align:center"&gt;  
        					&lt;f:facet name="header"&gt;RG&lt;/f:facet&gt;  
        	 			&lt;h:outputText value="#{p.pessoa.rg}" /&gt;  
        				&lt;/p:column&gt;  
  
        				&lt;p:column style="width:25px; text-align:center"&gt;  
        					&lt;f:facet name="header"&gt;CPF&lt;/f:facet&gt;  
           				&lt;h:outputText value="#{p.pessoa.cpf}" /&gt;  
	        			&lt;/p:column&gt;  
  
        				&lt;p:column style="width:25px;  text-align:center"&gt;  
           				&lt;f:facet name="header"&gt;CARTÃO SUS&lt;/f:facet&gt;  
           					&lt;h:outputText value="#{p.cartaoSUS}" /&gt;  
        				&lt;/p:column&gt;        				
        			&lt;/p:dataTable&gt;        			
        		&lt;/h:form&gt;
    	&lt;/p:dialog&gt;
F

Segue algumas considerações:

1º Qual versão do primeFaces você esta usando. De preferencia para a ultima versao estavel do produto (3.1.1)
2º Tenta colocar seu form acima do dialog e testa :

<h:form id="formDl"> <p:dialog id="dlgPacientes" header="Resultado da pesquisa" widgetVar="dtPacientes" modal="true" width="1000" height="500" > .... </p:dialog> </h:form>

3º voce usou a propriedade ajax = false ?
Da pra vc usar no commandlink e no setPropertyActionListener …

<h:commandLink actionListener="#{bpaiBean.teste}" ajax=false>  
                            <h:outputText value="#{p.pessoa.nome}" />  
                            <f:setPropertyActionListener target="#{bpaiBean.bpai.paciente}" value="#{p}" ajax = false/>  
                        </h:commandLink>

testa ai e posta o resultado …

A

Vamor ter menos dor de cabeça ainda, se você esta utilizando primefaces, utilize o p:commandLink e não o h:commandLink, utilize tudo que esteja disponível.

&lt;p:commandLink actionListener="#{bpaiBean.teste}" ajax="true"&gt;  
                            &lt;h:outputText value="#{p.pessoa.nome}" /&gt;  
                            &lt;f:setPropertyActionListener target="#{bpaiBean.bpai.paciente}" value="#{p}" /&gt;  
                        &lt;/p:commandLink&gt;

outra coisa, muitas ações do primefaces são chamadas por jquery, logo, seu dialog pode ser exibido/escondido a qualquer minuto, você tem essas funções:

dlgPacientes.show()
dlgPacientes.hide()

e junto do seu p:commandLink você tem vários onAlgumaCoisa, como por exemplo, oncomplete, onclick, onetc…

sabendo casar esses elementos você vai ter o resultado que você está querendo, mas como o fabio disse, utilize ajax=“true” para ser realizado a operação sem sair do view da página, e se for necessário, de update em algum elemento pelo próprio commandlink pelo update=“NomeDoQueUpdatear”.

E

André, Fábio valeu pela ajuda mas testei aqui e foi sem sucesso, vai ver o primefaces não dá suporte a essa questão aqui.
Vou ver se consigo fazer de outro jeito, obrigado pela atenção valeu.
A questão é que o meu commandLink não chama o meu método no Bean, quando clico no commandLink simplesmente fecha o dialog.

Criado 2 de maio de 2012
Ultima resposta 3 de mai. de 2012
Respostas 5
Participantes 3