<p:dialog> não abre

na minha página tenho uma lista de objetos os quais estou listando com uma ui:repeat gerando <p:commandLink>
ao clicar no link quero abrir uma <p:dialog>
mas não está abrindo

<ui:define name="conteudo">

		<f:metadata>
			<f:event listener="#{facesContext.externalContext.invalidateSession}" type="preRenderView" />
		</f:metadata>
		
		<h:form id="listarNotas" prependId="false">
			<h:panelGroup layout="block"
				style="border: 0 none; color: rgb(53, 130, 111); font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 18px; margin: 0; padding:0;">
				<em>Nota Fiscal</em>
			</h:panelGroup>

			<p:ajaxStatus onstart="loading.show();" onsuccess="loading.hide();" />

			<p:dialog modal="true" widgetVar="loading" showHeader="false"
				draggable="false" closable="false" style="text-align: center;">
				<img src="#{request.contextPath}/resources/images/ajax-loader.gif" />
				<br />
				<br />Carregando...
			</p:dialog>
										
			<p:tabView id="tabs" dynamic="true">
				<p:tab id="tabs-1" title="NOTAS FISCAIS">
					<p:panel id="tab1">
						<h:panelGroup id="panel" style="margin: 10px 0 10px 0;" layout="block">
							<h:panelGrid id="panell" columns="2" columnClasses="column1,column2" style="width: 100%;">
								<table id="table">
									<tr>
										<td>CONTRATO</td>
										<td>PESSOA/RAZÃO</td>
										<td>BOLETO</td>
										<td>VENCIMENTO</td>
										<td>VALOR</td>
										<td align="center">CARTA DESCONTO</td>
									</tr>
									
									<ui:repeat var="nota" value="#{autenticar.notas}">
										<tr>
											<td>
												<p:commandLink id="link" value="#{nota.contrato}" update=":novaNota">
													<f:setPropertyActionListener target="#{autenticar.notaSelecionada}" value="#{nota}"/>
													<f:ajax render=":novaNota" listener="#{autenticar.mostrarPopupNotaNova()}" />
												</p:commandLink>
												
											</td>
										</tr>
									</ui:repeat>
								</table>
							</h:panelGrid>
						</h:panelGroup>

						<h:panelGroup style="text-align: left;">
							<h:messages id="mensagemEmail" styleClass="message-chat"
								style="margin-bottom: 20px;" globalOnly="true" />
						</h:panelGroup>
					</p:panel>
				</p:tab>
			</p:tabView>
		</h:form>

		<p:dialog header="Nota Fiscal Eletrônica" modal="true" id="novaNota" widgetVar="novaNota" draggable="false" >
			<h:panelGroup layout="block">
		           	   <h:outputLabel value="Srs. Clientes, " /><br/><br/>
					   &#160;&#160;&#160;
					   <h:outputLabel value="Em virtude da implantação do novo sistema de nota fiscal eletrônica , disponibilizado pela SEFIN-Fortaleza,  
					   informamos que o acesso às suas notas fiscais deverá ser realizado através do link abaixo. " /><br/><br/>
					   <h:outputLabel value="Utilize os dados apresentados para consulta ao seu documento de cobrança: " /><br/>
					   <h:outputLabel value="- Número da NFS-e*: #{autenticar.notaSelecionada.numNota} : " /><br/>
					   <h:outputLabel value="- Código de Verificação*: #{autenticar.notaSelecionada.codVerificacao} : " /><br/>
					   <h:outputLabel value="- CNPJ do Prestador*:  63554067-0001/98 " /><br/>
					   <h:outputLabel value="- Link : " /> <a target="_blank" href="https://iss.fortaleza.ce.gov.br"> https://iss.fortaleza.ce.gov.br/</a><br/>
			</h:panelGroup>
			
			<h:panelGroup layout="block" style="text-align: center; margin-top: 10px;">
				<p:commandButton value="OK" onclick="novaNota.hide();" />
			</h:panelGroup>
		</p:dialog>
		
	</ui:define>

Obrigado.

[quote=tsouzam]na minha página tenho uma lista de objetos os quais estou listando com uma ui:repeat gerando <p:commandLink>
ao clicar no link quero abrir uma <p:dialog>
mas não está abrindo

<ui:define name="conteudo">

		<f:metadata>
			<f:event listener="#{facesContext.externalContext.invalidateSession}" type="preRenderView" />
		</f:metadata>
		
		<h:form id="listarNotas" prependId="false">
			<h:panelGroup layout="block"
				style="border: 0 none; color: rgb(53, 130, 111); font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 18px; margin: 0; padding:0;">
				<em>Nota Fiscal</em>
			</h:panelGroup>

			<p:ajaxStatus onstart="loading.show();" onsuccess="loading.hide();" />

			<p:dialog modal="true" widgetVar="loading" showHeader="false"
				draggable="false" closable="false" style="text-align: center;">
				<img src="#{request.contextPath}/resources/images/ajax-loader.gif" />
				<br />
				<br />Carregando...
			</p:dialog>
										
			<p:tabView id="tabs" dynamic="true">
				<p:tab id="tabs-1" title="NOTAS FISCAIS">
					<p:panel id="tab1">
						<h:panelGroup id="panel" style="margin: 10px 0 10px 0;" layout="block">
							<h:panelGrid id="panell" columns="2" columnClasses="column1,column2" style="width: 100%;">
								<table id="table">
									<tr>
										<td>CONTRATO</td>
										<td>PESSOA/RAZÃO</td>
										<td>BOLETO</td>
										<td>VENCIMENTO</td>
										<td>VALOR</td>
										<td align="center">CARTA DESCONTO</td>
									</tr>
									
									<ui:repeat var="nota" value="#{autenticar.notas}">
										<tr>
											<td>
												<p:commandLink id="link" value="#{nota.contrato}" update=":novaNota">
													<f:setPropertyActionListener target="#{autenticar.notaSelecionada}" value="#{nota}"/>
													<f:ajax render=":novaNota" listener="#{autenticar.mostrarPopupNotaNova()}" />
												</p:commandLink>
												
											</td>
										</tr>
									</ui:repeat>
								</table>
							</h:panelGrid>
						</h:panelGroup>

						<h:panelGroup style="text-align: left;">
							<h:messages id="mensagemEmail" styleClass="message-chat"
								style="margin-bottom: 20px;" globalOnly="true" />
						</h:panelGroup>
					</p:panel>
				</p:tab>
			</p:tabView>
		</h:form>

		<p:dialog header="Nota Fiscal Eletrônica" modal="true" id="novaNota" widgetVar="novaNota" draggable="false" >
			<h:panelGroup layout="block">
		           	   <h:outputLabel value="Srs. Clientes, " /><br/><br/>
					   &#160;&#160;&#160;
					   <h:outputLabel value="Em virtude da implantação do novo sistema de nota fiscal eletrônica , disponibilizado pela SEFIN-Fortaleza,  
					   informamos que o acesso às suas notas fiscais deverá ser realizado através do link abaixo. " /><br/><br/>
					   <h:outputLabel value="Utilize os dados apresentados para consulta ao seu documento de cobrança: " /><br/>
					   <h:outputLabel value="- Número da NFS-e*: #{autenticar.notaSelecionada.numNota} : " /><br/>
					   <h:outputLabel value="- Código de Verificação*: #{autenticar.notaSelecionada.codVerificacao} : " /><br/>
					   <h:outputLabel value="- CNPJ do Prestador*:  63554067-0001/98 " /><br/>
					   <h:outputLabel value="- Link : " /> <a target="_blank" href="https://iss.fortaleza.ce.gov.br"> https://iss.fortaleza.ce.gov.br/</a><br/>
			</h:panelGroup>
			
			<h:panelGroup layout="block" style="text-align: center; margin-top: 10px;">
				<p:commandButton value="OK" onclick="novaNota.hide();" />
			</h:panelGroup>
		</p:dialog>
		
	</ui:define>

Obrigado.[/quote]

o método chamado na tag <f:ajax>

public void mostrarPopupNotaNova(AjaxBehaviorEvent event) {
		RequestContext context = RequestContext.getCurrentInstance();
		//NotaFiscalVO nota = notaPage;
		//if (nota.getNumNFSE() != null) {
		
			context.execute("novaNota.show();");
			//context.execute("PF('novaNota').show();");
		//}
	}

Retire o parentenses na chamada do seu ajax. deixe só <f:ajax … listener="#{autenticar.mostrarPopupNotaNova}" />

Caso não funcione, se no seu método do ajax não for fazer nada além de chamar o dialog então ele é desnecessário. Chame o modal pelo seu xhtml mesmo:

<p:commandLink id="link" value="#{nota.contrato}" update=":novaNota" onclick="novaNota.show()"> <f:setPropertyActionListener target="#{autenticar.notaSelecionada}" value="#{nota}"/> </p:commandLink>

[quote=ErickRAR]Retire o parentenses na chamada do seu ajax. deixe só <f:ajax … listener="#{autenticar.mostrarPopupNotaNova}" />

Caso não funcione, se no seu método do ajax não for fazer nada além de chamar o dialog então ele é desnecessário. Chame o modal pelo seu xhtml mesmo:

<p:commandLink id="link" value="#{nota.contrato}" update=":novaNota" onclick="novaNota.show()"> <f:setPropertyActionListener target="#{autenticar.notaSelecionada}" value="#{nota}"/> </p:commandLink>[/quote]

Fiz as alterações que você recomendou.
Mas continua não abrindo a dialog.
O firebug da a mensagem: " TypeError: novaNota.show is not a function"

Qual versão do Primefaces está usando? Até a 4 e como eu postei. As novas é PF(‘novaNota’).show();

To usando a 3.5

Mudei a propriedade update para o panel dentro da dialog
e funcionou.
Mas não está mostrando os valores do objeto selecionado.

<p:commandLink id="link" value="#{nota.contrato}" update=":panelNovaNota" onclick="novaNota.show()">
													<f:setPropertyActionListener target="#{autenticar.notaSelecionada}" value="#{nota}"/>
												</p:commandLink>

Coloque um form dentro do seu dialog aponte o update para atualizar esse form.

Continua não funcionando.

O <f:setPropertyActionListener> não está acessando o método set do bean.

<p:commandLink id="link" value="#{nota.contrato}" update=":formDialog" onclick="novaNota.show()">
     <f:setPropertyActionListener target="#{autenticar.notaSelecionada}" value="#{nota}"/>
</p:commandLink>

Qual o escopo do seu bean?

Tire o id do commandLink. Pode estar confundindo por ter varios componentes com o mesmo id.
Se não der certo, verifique se você não tem forms aninhados e teste com o primefaces 4, se possível.

[quote=ErickRAR]Tire o id do commandLink. Pode estar confundindo por ter varios componentes com o mesmo id.
Se não der certo, verifique se você não tem forms aninhados e teste com o primefaces 4, se possível.[/quote]

não há forms aninhados.
modeu a versao do prime para a 4, mas ao abrir a dialog continua não trazendo os dados da nota selecionada.

coloquei o breakpoint no metodo set da notaSelecionada, mas ele não para la.
a tag <f:setPropertyActionListener target="#{autenticar.notaSelecionada}" value="#{nota}" /> não está chamando o método.

O seu problema pode ser o mesmo desse cara: http://www.pceworld.com/view/7759529

Se você procurar por “propertyActionListener inside ui:repeat” vai aparecer diversas pessoas com o mesmo problema.

Pode testar usando f:attribute, não sei se irá contornar:

<p:commandLink id="link" ..... actionListener="#{autenticar.selecionarNota}"...> <f:attribute name="notaSelecionada" value="#{nota}" /> </p:commandLink>

E no bean:

public void selecionarNota(ActionEvent event){ this.notaSelecionada = (Nota)event.getComponent().getAttributes().get("notaSelecionada"); System.out.println("Nota selecionada"); }

[quote=ErickRAR]O seu problema pode ser o mesmo desse cara: http://www.pceworld.com/view/7759529

Se você procurar por “propertyActionListener inside ui:repeat” vai aparecer diversas pessoas com o mesmo problema.

Pode testar usando f:attribute, não sei se irá contornar:

<p:commandLink id="link" ..... actionListener="#{autenticar.selecionarNota}"...> <f:attribute name="notaSelecionada" value="#{nota}" /> </p:commandLink>

E no bean:

public void selecionarNota(ActionEvent event){ this.notaSelecionada = (Nota)event.getComponent().getAttributes().get("notaSelecionada"); System.out.println("Nota selecionada"); }[/quote]

o problema é que não esta chamando o método no bean.

Conssegui resolver.

a página ficou assim:

<h:form id="listarNotas" prependId="false">
			<p:dialog header="Nota Fiscal Eletrônica" modal="true" id="idNovaNota" widgetVar="novaNota" draggable="false" 
					styleClass="position:absolute; margin:auto; left:0; right:0; top:0; bottom:0;">
				<h:panelGroup layout="block" >
		           <h:outputLabel value="Srs. Clientes, " /><br/><br/>
				   &#160;&#160;&#160;
				   <h:outputLabel value="Em virtude da implantação do novo sistema de nota fiscal eletrônica, disponibilizado pela SEFIN-Fortaleza, "/><br/> 
				   <h:outputLabel value="informamos que o acesso às suas notas fiscais deverá ser realizado através do link abaixo. " /><br/><br/>
				   <h:outputLabel value="Utilize os dados apresentados para consulta ao seu documento de cobrança: " /><br/>
				   <h:outputLabel value="- Número da NFS-e*:" />&#160;<h:panelGroup id="numNota" /><br/>
				   <h:outputLabel value="- Código de Verificação*:" />&#160;<h:panelGroup id="codVerificacao" /><br/>
				   <h:outputLabel value="- CNPJ do Prestador*: 63554067-0001/98 " /><br/>
				   <h:outputLabel value="- Link: " /> <a target="_blank" href="https://iss.fortaleza.ce.gov.br"> https://iss.fortaleza.ce.gov.br/</a><br/>
				</h:panelGroup>
				
				<h:panelGroup layout="block" style="text-align: center; margin-top: 10px;">
					<p:commandButton value="OK" onclick="PF('novaNota').hide()" />
				</h:panelGroup>
			</p:dialog>
			
			<h:panelGroup layout="block"
				style="border: 0 none; color: rgb(53, 130, 111); font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 18px; margin: 0; padding:0;">
				<em>Nota Fiscal</em>
			</h:panelGroup>

			<p:ajaxStatus onstart="PF('loading').show()" onsuccess="PF('loading').hide()" />

			<p:dialog modal="true" widgetVar="loading" showHeader="false"
				draggable="false" closable="false" style="text-align: center;">
				<img src="#{request.contextPath}/resources/images/ajax-loader.gif" />
				<br />
				<br />Carregando...
			</p:dialog>
										
			<p:tabView id="tabs" dynamic="true">
				<p:tab id="tabs-1" title="NOTAS FISCAIS">
					<p:panel id="tab1">
						<h:panelGroup id="panel" style="margin: 10px 0 10px 0;" layout="block">
							<h:panelGrid id="panell" columns="2" columnClasses="column1,column2" style="width: 100%;">
								<table id="table">
									<tr>
										<td align="center">CONTRATO</td>
										<td align="center">PESSOA/RAZÃO</td>
										<td align="center">BOLETO</td>
										<td align="center">VENCIMENTO</td>
										<td align="center">VALOR</td>
										<td align="center">CARTA DESCONTO</td>
									</tr>
									
									<ui:repeat value="#{autenticar.notas}" var="nota">
										<tr>
											<td align="right">
												<p:commandLink value="#{nota.contrato}" update=":listarNotas:idNovaNota" oncomplete="setarCamposDialog(#{nota.numNota}, #{nota.codVerificacao}); PF('novaNota').show();" />
											</td>
											<td align="center">
												<p:commandLink value="#{nota.razaoSocial}" update=":listarNotas:idNovaNota" oncomplete="setarCamposDialog(#{nota.numNota}, #{nota.codVerificacao}); PF('novaNota').show();" />
											</td>
											<td align="right">
												<p:commandLink value="#{nota.boleto}" update=":listarNotas:idNovaNota" oncomplete="setarCamposDialog(#{nota.numNota}, #{nota.codVerificacao}); PF('novaNota').show();" />
											</td>
											<td align="center">
												<p:commandLink update=":listarNotas:idNovaNota" oncomplete="setarCamposDialog(#{nota.numNota}, #{nota.codVerificacao}); PF('novaNota').show();" >
													<h:outputText value="#{nota.dtVencimento}">
														<f:convertDateTime pattern="dd/MM/yyyy" timeZone="#{autenticar.timeZone}" />
													</h:outputText>
												</p:commandLink>
											</td>
											<td align="right">
												<p:commandLink update=":listarNotas:idNovaNota"  oncomplete="setarCamposDialog(#{nota.numNota}, #{nota.codVerificacao}); PF('novaNota').show();">
													<h:outputFormat value="#{nota.valor}">
														<f:convertNumber pattern="0.00"/>
													</h:outputFormat>
												</p:commandLink>
											</td>
											<td align="center">
												(&#160;<p:commandLink value="#{nota.qtCartas}" update=":listarNotas:idNovaNota"  oncomplete="setarCamposDialog(#{nota.numNota}, #{nota.codVerificacao}); PF('novaNota').show();" />&#160;)
											</td>
										</tr>
									</ui:repeat>
								</table>
							</h:panelGrid>
						</h:panelGroup>

						<h:panelGroup style="text-align: left;">
							<h:messages id="mensagemEmail" styleClass="message-chat"
								style="margin-bottom: 20px;" globalOnly="true" />
						</h:panelGroup>
					</p:panel>
				</p:tab>
			</p:tabView>
		</h:form>

e eu criei uma função jquery, que eu chamo no onComplete do <p:commandLink>, para setar na dialog os valores que eu queria.

ficou assim:

function setarCamposDialog(numNota, codVerificacao){
				$("#numNota").html(numNota);
				$("#codVerificacao").html(codVerificacao);
			}