PrimeFaces Componente: Dialog Framework - Basic. Não exibe a página. [RESOLVIDO: prime4.0-Snap]

Estou tentando usar o componente do Prime (Dialog Framework basic) para exibir informações de um arquivo xhtml através de um commandButton, simulando uma janela modal. Porém ao clicar neste botão a tela não é exibida. Segue o código: (está bem parecido com o exemplo do show case do primefaces).

Formulário que irá chamar o outro xhtml de forma modal:

<p:outputLabel value="Nome do Curso: " styleClass="label"><br />
       <p:inputText value="nomeDoCurso" styleClass="inputtext" size="100"/>
</p:outputLabel>
                          
<p:commandButton icon="ui-icon-extlink" action="#{dialogBean.viewCursos}" />

DialogBean

@ManagedBean
@SessionScoped
public class DialogBean implements Serializable {
  
    
    public String viewCursos() { 
        System.out.println("chegou aqui");
        return "dialog:area";  
   
        
    }  
      
    public String viewCursosCustomized() {  
        System.out.println("chegou aqui");
        return "dialog:viewCursos?modal=true";  
    }  
}

O método é chamado pois é exibida a mensagem na console, mas o return dialog não funciona. Não é exibido erros.

O arquivo area.xhtml está somente com um texto simples, somente para teste. E está na raiz.

teria como vc postar todo o seu xhtml.

Segue o cursos.xhtml:

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

        <link rel="stylesheet" type="text/css" href="css/padrao.css"/>
    </h:head>
    
        <ui:composition template="padrao.xhtml">
            <ui:debug hotkey="K" />
            <ui:define name="centro">

                <p:toolbar id="tool_curso" >
                            <p:toolbarGroup align="left">  
                                <p:commandButton icon="ui-icon-document" title="Novo"  
                                    style="width:25px;height: 25px" />
                                <p:commandButton icon="ui-icon-search" title="Localizar"  
                                    style="width:25px;height: 25px" /> 
                                <p:commandButton icon="ui-icon-pencil" title="Editar"  
                                    style="width:25px;height: 25px" /> 
                                <p:commandButton icon="ui-icon-cancel" title="Cancelar"  
                                    style="width:25px;height: 25px" /> 
                                <p:commandButton icon="ui-icon-disk" title="Salvar"  
                                    style="width:25px;height: 25px" /> 
                                <p:commandButton icon="ui-icon-trash" title="Excluir"  
                                    style="width:25px;height: 25px" /> 
                            </p:toolbarGroup>  
                            
                            
                    </p:toolbar>  
                
               
                <h:form id="frm_curso_pg">      
                <p:tabView>
                    
                    <p:tab title ="Curso">
                        
                       <p:fieldset legend="Dados do Curso" id="fds_curso">  
                     
                      
                          <p:outputLabel value ="Código: "><br />
                            <p:inputText value="codCurso" styleClass="inputtext" size="4" />
                          </p:outputLabel>
                      
                          <p:outputLabel value="Nome do Curso: " styleClass="label"><br />
                            <p:inputText value="nomCurso" styleClass="inputtext" size="100"/>
                          </p:outputLabel>
                          
                          <p:commandButton icon="ui-icon-extlink" action="#{dialogBean.area}" />

                       </p:fieldset>

                    </p:tab>
   
                </p:tabView>  
                
              </h:form> 
            </ui:define>
        </ui:composition>

</html>

area.xhtml (este é o arquivo que deve estar em forma de janela, só pra testes mesmo)

<html xmlns="http://www.w3.org/1999/xhtml"
   xmlns:f="http://java.sun.com/jsf/core"
   xmlns:h="http://java.sun.com/jsf/html"
   xmlns:p="http://primefaces.org/ui"
   xmlns:ui="http://java.sun.com/jsf/facelets">
    
   
                   <h2>Áreas de Ensino</h2>
   
</html>

quando trabalho com dialog, vc declara o componente


<p:dialog id="id_dialogo"  widgetVar="dialogo_necessario">  
    ... conteúdo 
</p:dialog>  

a propriedade widgetVar é necessaria para executar a ação de visualização
feita pelo botão na propriedade oncomplete

<p:commandButtom value="Nome Apresentado" oncomplete="dialog_necessario.show()"  type="button"/>  

agora vi o componente q vc esta utilizando, nunca trabalhei com esse

desculpa

vc está usando o primefaces 4.0-snapshot ? e já trocou o javax.faces pra versão 2.1.20 ?

O prime é o 3.5 e javax está atualizado.

eu testei essa feature e o codigo que verifica o outcome (‘dialog:’) só está na versão 4.0-snapshot.
e o javax.faces tem q ser na versão 2.1.20 ou superior senão não funciona

É kdoigor, tentei colocar pra funcionar e realmente não deu certo. Tive que partir para utilizar o componente dialog mesmo Funcionou, mas esse outro componente parecia ser mais fácil e mais enxuto de utilizar. Como estou utilizando a versão 3.5 do prime, não terá como utilizá-lo.
Vlw pela ajuda!!!

Boa noite,

Estou com o mesmo problema!
Esta jar 4.0-snapshot, aonde consigo baixar.

adi_silva, procurei e também não consegui encontrar. O curioso é que no site do primefaces mostra no rodapé que foi desenvolvido nesta versão…

o meu sempre da erro de compatibilidade na hora de iniciar, quais são as libs necessárias para funcionar primefaces com snapshot?

Olá, coloque isso dentro do faces-config.xml

<application> <action-listener>org.primefaces.application.DialogActionListener</action-listener> <navigation-handler>org.primefaces.application.DialogNavigationHandler</navigation-handler> <view-handler>org.primefaces.application.DialogViewHandler</view-handler> </application>
fonte: http://forum.primefaces.org/viewtopic.php?f=3&t=31458

Ow mano você conseguiu resolver estou com o mesmo problema!

fiz um post mostrando como usar dialog framework com um crud
http://deividnn.net/2014/04/07/como-usar-o-dialog-framework-data-do-primefaces-4/

Pessoal, bom dia, estou com o mesmo problema. O link do amigo aí de cima já não abre mais. Estou usando o PrimeFaces 5.0, Apache Tomcat 6 e JDK 1.6.

Me ajudem por favor.

package controller;

import dao.ImovelDao;

import java.io.Serializable;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;




import model.Imovel;

@ManagedBean @ViewScoped
public class ImovelBean implements Serializable {
	private ImovelDao imovelDao;
	private Imovel imovel = new Imovel();
	private DataModel<Imovel> imoveis;

	public void novo() {
		imovel = new Imovel();
	}

	public String inserir() {
		String resultado = "falha";
		imovelDao = new ImovelDao();
		boolean retorno = imovelDao.inserir(imovel);

		if (retorno) {
			resultado = "imoveis";
		}

		return resultado;
	}

	public void selecionar() {
		imovel = imoveis.getRowData();
	}

	public String alterar() {
		String resultado = "falha";
		imovelDao = new ImovelDao();
		boolean retorno = imovelDao.alterar(imovel);

		if (retorno) {
			resultado = "imoveis";
		}

		return resultado;
	}

	public String remover() {
		String resultado = "falha";
		imovelDao = new ImovelDao();
		boolean retorno = imovelDao.remover(imovel);

		if (retorno) {
			resultado = "imoveis";
		}

		return resultado;
	}

	public DataModel<Imovel> consultar() {
		imovelDao = new ImovelDao();
		List<Imovel> imovelList = imovelDao.listar();
		imoveis = new ListDataModel<Imovel>(imovelList);
		return imoveis;
	}
	
	public Imovel getImovel() {
		return imovel;
	}
	
	public void setImovel(Imovel imovel) {
		this.imovel = imovel;
	}

	public DataModel<Imovel> getImoveis() {
		imovelDao = new ImovelDao();
		List<Imovel> imovelList = imovelDao.listar();
		imoveis = new ListDataModel<Imovel>(imovelList);
		return imoveis;
	}

	public void setImoveis(DataModel<Imovel> imoveis) {
		this.imoveis = imoveis;
	}
}
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:f="http://xmlns.jcp.org/jsf/core"
	xmlns:h="http://xmlns.jcp.org/jsf/html"
	xmlns:p="http://primefaces.org/ui">

<h:head>
	<title>Gerenciar Imóveis</title>
</h:head>
<h:body>
	<div align="center">
		<h:form id="formPrincipal">

			<p:dataTable id="tabelaImoveis" value="#{imovelBean.imoveis}" var="lista" style="width:70%">
				<f:facet name="header">Gerenciador de Imóveis</f:facet>
				<p:column headerText="Matrícula">
					<h:outputText value="#{lista.matriculaImovel}" />
				</p:column>
				<p:column headerText="Endereço">
					<h:outputText value="#{lista.enderecoImovel}" />
				</p:column>
				<p:column headerText="Valor do Imóvel">
					<h:outputText value="#{lista.valorImovel}">
						<f:convertNumber type="currency" locale="pt_BR" />
					</h:outputText>
				</p:column>
				<p:column headerText="Ações">
					<p:commandButton value="Alterar" update=":formAlterar:Alterar"
						onclick="Alterar.show();">
					</p:commandButton>
					<p:commandButton value="Excluir" update=":formExcluir:Excluir"
						oncomplete="confirmation.show()">
						
						<f:setPropertyActionListener target="#{imovelBean.selecionar.imovel}"
							value="#{lista}" />
					</p:commandButton>
				</p:column>

			</p:dataTable>
			<p:commandButton value="Cadastrar" id="cadastrar"
				oncomplete="dialogCadastrar.show()" />
		</h:form>
	</div>
	<h:form id="formAlterar">
		<p:dialog header="Alterar Registro" widgetVar="dialogAlterar" modal="true" id="Alterar">
			<p:panelGrid id="panelAlterar" columns="2">
				<h:outputText value="Matrícula" />
				<p:inputText value="#{imovelBean.imovel.matriculaImovel}" />
				<h:outputText value="Endereço:" />
				<p:inputText value="#{imovelBean.imovel.enderecoImovel}" />
				<h:outputText value="Valor:" />
				<p:inputText value="#{imovelBean.imovel.valorImovel}" />
			</p:panelGrid>
			<p:commandButton value="Alterar"
				actionListener="#{imovelBean.alterar}"
				update=":formPrincipal:tabelaImoveis"
				oncomplete="dialogAlterar.hide()" />
		</p:dialog>
	</h:form>
	<h:form id="formCadastrar">
		<p:dialog header="Novo Cadastro" widgetVar="dialogCadastrar" modal="true">
			<p:panelGrid columns="2">
				<p:outputLabel value="Matrícula" />
				<p:inputText size="8" value="#{imovelBean.imovel.matriculaImovel}" />
				<p:outputLabel value="Endereço" />
				<p:inputText size="60" value="#{imovelBean.imovel.enderecoImovel}" />
				<p:outputLabel value="Valor" />
				<p:inputText size="10" value="#{imovelBean.imovel.valorImovel}" />
				<h:commandButton value="Cadastrar" action="#{imovelBean.inserir}" />
			</p:panelGrid>
			<p:commandButton value="Cadastrar" action="#{imovelBean.inserir}"
				update=":formPrincipal:tabelaImoveis" oncomplete="dialogCadastrar.hide()" />
		</p:dialog>
	</h:form>
	<h:form id="formExcluir">
		<p:confirmDialog id="Excluir"
			message="Confirma exclusão do imóvel de matrícula #{imovelBean.imovel.matriculaImovel}?"
			header="Excluir" severity="alert" widgetVar="confirmation">
			
			<p:commandButton id="confirm" value="Sim"
				oncomplete="confirmation.hide()"
				actionListener="#{imovelBean.excluir}"
				update=":formPrincipal:tabelaImoveis" />
			<p:commandButton id="decline" value="Não"
				onclick="confirmation.hide()" type="button" />
		</p:confirmDialog>
	</h:form>
</h:body>
</html>

Tenta colocar isso no seu faces-config

    <application>  
        <action-listener>org.primefaces.application.DialogActionListener</action-listener>  
        <navigation-handler>org.primefaces.application.DialogNavigationHandler</navigation-handler>  
        <view-handler>org.primefaces.application.DialogViewHandler</view-handler>  
    </application>

O problema era o Ajax.

Obrigado.