[RESOLVIDO]JSF 2.0 com PrimeFaces 2.2.1: Problema ao fechar o p:Dialog

5 respostas
donny

Bom dia a todos!

Tenho no xhtml o código abaixo do que constrói um p:Dialog. Esse p:dialog eu chamo apartir do duplo clique do usuário nas linhas de uma tabela. Para cada linha, ao dar duplo clique nela, abre um p:Dialog para exibir um gráfico. O problema está quando exibe o segundo p:dialog, porque também abre por trás o primeiro. Quando o usuário clica pela terceira vez na tabela para ver o gráfico no p:Dialog volta abrir por trás o primeiro e o segundo p:Dialog anterios, e assim vai… Parece que quando o usuário clica no “X” para fechar o p:Dialog, ele apenas fica oculto, e não fechando realmente.

<p:dialog header="Gráfico" widgetVar="graficoDialog"
                            resizable="false" width="800" showEffect="slide" modal="true"
                            hideEffect="slide" >
                            <h:panelGrid id="display" columns="1">
                                    <img src="#{facesContext.externalContext.requestContextPath}/img/#{calcularControle.nomeGrafico}"></img>
                            </h:panelGrid>
                        </p:dialog>

O que está faltando?

Desde já agradeço pela atenção!

Att,
Donizete Waterkemper

5 Respostas

Polverini

posta o código completo da pagina,

donny

Segue abaixo o código da página:

<h:panelGrid columns="1" style="text-align:left;width:800px;">
							<p:dataTable value="#{calcularControle.dadosIternosLista}"
								id="tabela" emptyMessage="Nenhum registro encontrado"
								rowIndexVar="var" paginator="true" paginatorPosition="bottom"
								firstPageLinkLabel="Primeira" previousPageLinkLabel="Anterior"
								nextPageLinkLabel="Proxima" lastPageLinkLabel="ultima" rows="10"
								var="resultado" selectionMode="single" 
								onRowSelectComplete="graficoDialog.show()"
								rowSelectListener="#{calcularControle.onRowSelectNavigate}"
								onRowSelectUpdate="display" >

								<f:facet name="header" style="width: 100%;">Resultado</f:facet>

								<p:column>
									<h:outputText value="#{resultado.municipio}" />
								</p:column>
								<p:column>
									<h:outputText value="#{resultado.produtoEmpresa.nome}" />
								</p:column>
								<p:column>
									<h:outputText value="#{resultado.produtoConcorrente.nome}">
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText value="#{resultado.valorPrecoAtual}">
										<f:convertNumber  pattern="#0.00" />
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText value="#{resultado.posicionamentoAtual}"  size="8">
									<f:convertNumber pattern="###,##%" />
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText value="-">
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText
										value="#{resultado.posicionamentoPreco.posicionamentoIdeal}" size="8">
										<f:convertNumber pattern="###,##%" />
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText
										value="#{resultado.posicionamentoPreco.posicionamentoMinimo}">
										<f:convertNumber pattern="###,##%" />
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText
										value="#{resultado.posicionamentoPreco.posicionamentoMaximo}">
										<f:convertNumber pattern="###,##%" />
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText
										value="#{resultado.posicionamentoPreco.precoOtimo}">
										<f:convertNumber  pattern="#0.00" />
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText
										value="#{resultado.posicionamentoPreco.precoMinimo}">
										<f:convertNumber  pattern="#0.00" />
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText
										value="#{resultado.posicionamentoPreco.precoMaximo}">
										<f:convertNumber  pattern="#0.00" />
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText value="#{resultado.posicionamentoPreco.margemUnitAtual}">
									<f:convertNumber pattern="###,##%" />
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText value="#{resultado.posicionamentoPreco.margemUnitEsperada}">
									<f:convertNumber pattern="###,##%" />
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText value="#{resultado.posicionamentoPreco.marketShareAtual}">
									<f:convertNumber pattern="###,##%" />
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText value="#{resultado.posicionamentoPreco.marketShareEsperado}">
									<f:convertNumber pattern="###,##%" />
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText
										value="#{resultado.posicionamentoPreco.MACOAtual}">
										<f:convertNumber  pattern="#,##0.00"/>
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText
										value="#{resultado.posicionamentoPreco.MACOPosicionamento}">
											<f:convertNumber  pattern="#,##0.00"/>
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText
										value="#{resultado.posicionamentoPreco.posicionamentoDePreco}">
											<f:convertNumber  pattern="#,##0.00"/>
									</h:outputText>
								</p:column>
								<p:column>
									<h:outputText value="#{resultado.posicionamentoPreco.r2}">
										<f:convertNumber  pattern="#0.00" />
									</h:outputText>
								</p:column>
							</p:dataTable>
						</h:panelGrid>

						<p:dialog header="Gráfico" widgetVar="graficoDialog"
							resizable="false" onclick="graficoDialog.hide();" width="800" showEffect="slide" modal="true" 
							hideEffect="slide" >
							<h:panelGrid id="display" columns="1">
									<img src="#{facesContext.externalContext.requestContextPath}/img/#{calcularControle.nomeGrafico}"></img>
							</h:panelGrid>
						</p:dialog>
					</center>
				</h:form>
Polverini

tenta colocar o dialog em um ouputpanel e atualizar ele, tive problemas assim por questões de atualização do ajax, seria mais ou menos assim

&lt;p:outputPanel id="display"&gt;
  &lt;p:dialog header="Gráfico" widgetVar="graficoDialog"  
                            resizable="false" onclick="graficoDialog.hide();" width="800" showEffect="slide" modal="true"   
                            hideEffect="slide" &gt;  
                            &lt;h:panelGrid columns="1"&gt;  
                                    <img src="#{facesContext.externalContext.requestContextPath}/img/#{calcularControle.nomeGrafico}"></img>
                            &lt;/h:panelGrid&gt;  
  &lt;/p:dialog&gt;  
&lt;/p:outputPanel&gt;

P/s ta cortando o endereço da imagem

donny

Infelismente não resolveu o problema. Segue abaixo o código e a imagem em anexo:

<p:outputPanel id="display">
							<p:dialog header="Gráfico" widgetVar="graficoDialog"
								resizable="false" width="800" showEffect="slide" modal="true"
								hideEffect="slide">
								<h:panelGrid columns="1">
									<img src="#{facesContext.externalContext.requestContextPath}/img/#{calcularControle.nomeGrafico}"></img>
								</h:panelGrid>
							</p:dialog>
						</p:outputPanel>
donny

Apenas joguei o p:dialog dentro de outro form e resolveu o problema.

Obrigado pela ajuda!

Att,
Donizete Waterkemper

Criado 25 de março de 2011
Ultima resposta 25 de mar. de 2011
Respostas 5
Participantes 2