No PrimeFace 2.1, meu dataTable fica com style display none ao gerar

Bom dia pessoal

Estou testando o PrimeFaces e ao tentar utilizar o dataTable, seguindo o modelo no site, bem simples sem complicação nenhum, notei que o código html o table fica com um style display none. Não sei porque pois não configurei nada diferente. Abaixo segue os códigos:

EstadoController.java

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.tebosoftware.controller.endereco;

import br.tebosoftware.dao.endereco.EstadoDao;
import br.tebosoftware.model.endereco.Estado;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;

/**
*

  • @author Shubacca
    */
    public class EstadoController {

    private EstadoDao estadoDao;
    private List<Estado> dados;
    private Estado estado;
    private String erro;
    private boolean novo = false;
    private boolean editando = false;

    /** Creates a new instance of EstadoController */
    public EstadoController() {
    estadoDao = new EstadoDao();
    dados = new ArrayList<Estado>();
    estado = new Estado();
    pesquisar();
    }

    public List<Estado> getDados() {
    return dados;
    }

    public void setDados(List<Estado> dados) {
    this.dados = dados;
    }

    public Estado getEstado() {
    return estado;
    }

    public void setEstado(Estado estado) {
    this.estado = estado;
    }

    public void pesquisar() {
    dados.clear();
    dados.addAll(estadoDao.listar());
    }

    public String getErro() {
    return erro;
    }

    public void gravar() {
    try {
    estadoDao.gravar(estado);
    novo = false;
    editando = false;
    } catch (Exception e) {
    Logger.getLogger(getClass()).error("Erro ao gravar", e);
    erro = "Erro ao gravar";
    }
    }

    public void novo() {
    estado = new Estado();
    novo = true;
    editar();
    }

    public void editar() {
    editando = true;
    }

    public void excluir() {
    try {
    estadoDao.excluir(estado);
    estado = new Estado();
    novo = false;
    editando = false;
    } catch (Exception e) {
    Logger.getLogger(getClass()).error("Erro ao excluir", e);
    erro = "Erro ao excluir";
    }
    }

    public void setSigla(String sigla) {
    estadoDao.setSigla(sigla);
    }

    public String getSigla() {
    return estadoDao.getSigla();
    }

    public void setDescricao(String descricao) {
    estadoDao.setDescricao(descricao);
    }

    public String getDescricao() {
    return estadoDao.getDescricao();
    }

    public boolean isEditando() {
    return editando;
    }

    public boolean isNovo() {
    return novo;
    }

    public void cancelar(){
    estado = new Estado();
    novo = false;
    editando = false;
    }
    }
    [/code]

index.xhtml

[code]<?xml version=‘1.0’ encoding=‘ISO-8859-1’ ?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=“http://www.w3.org/1999/xhtml
xmlns:h=“http://java.sun.com/jsf/html
xmlns:f=“http://java.sun.com/jsf/core
xmlns:p=“http://primefaces.prime.com.tr/ui”>
<f:view>
<h:head>
<title>Teste de Cadastro de Estado</title>
</h:head>
<h:body>
<h:form>
<h:panelGrid columns=“2”>
<h:outputText value=“Sigla:” />
<h:inputText value="#{estadoController.sigla}" size=“2” maxlength=“2” />
<h:outputText value=“Descrição:” />
<h:inputText value="#{estadoController.descricao}" size=“40” maxlength=“40” />
<p:commandButton action="#{estadoController.pesquisar}" value=“Pesquisar” update=“dados” />
<p:commandButton action="#{estadoController.novo}" value=“Novo” update=“edicao” />
</h:panelGrid>
<p:dataTable
id=“dados”
var=“estado”
value="#{estadoController.dados}"
style=“display: block”>
<p:column>
<f:facet name=“header”>Sigla</f:facet>
<h:outputText value="#{estado.sigla}" />
</p:column>
<p:column>
<f:facet name=“header”>Descrição</f:facet>
<h:outputText value="#{estado.descricao}" />
</p:column>
</p:dataTable>
<h:panelGrid id=“edicao” columns=“2” rendered="#{estadoController.editando}">
<h:outputText value=“Sigla:” />
<h:inputText value="#{estadoController.estado.sigla}" maxlength=“2” />
<h:outputText value=“Descrição:” />
<h:inputText value="#{estadoController.estado.sigla}" maxlength=“2” />
<p:commandButton action="#{estadoController.gravar}" value=“Gravar” update=“edicao” />
<p:commandButton action="#{estadoController.cancelar}" value=“Cancelar” update=“edicao” />
</h:panelGrid>
</h:form>
</h:body>
</f:view>
</html>

[/code]

Desde já agradeço

Faz anotação ao seu bean

@ManagedBean
@SessionScoped
EstadoController

Obrigado pela resposta

Eu fiz o teste mas não mudou nada, pois eu já acessava o controller através do faces-config.xml.

falow

Ninguém passou por este problema? se este framework é problematico tem algum melhor?

Cara, eu não acho que o Primefaces seja problemático, pode ser que ele seja novo. Eu estou trabalhando em um projeto grande e na última semana migrei tudo que eu tinha do RichFaces para o Primefaces.

Vi que no Prime os componentes são bem mais simples de se utilizar além de deixar o código das páginas xhtml bem mais legível.
Acho que é questão de gosto. Vi que o fórum do primefaces é muito bem organizado, mas também vi muitas perguntas sem resposta lá.

A minha migração se deu em especial pela necessidade de melhor em alguns componentes e utilização do JSF 2.0 com o EL, permitindo a passagem de parâmetros para métodos do meu Managed Bean.

Em relação ao seu problema, vi que vc está inserindo todo o seu código dentro de um <f:view>, na minha aplicação removi todos eles durante a migração e está funcionando tudo ok, talvez seja algo que você deva considerar para resolver o problema.
:wink:

Depois de muito procurar descobri que estava fazendo caquinha…

no web.xml, esquici de colocar

&lt;servlet&gt; &lt;servlet-name&gt;Resource Servlet&lt;/servlet-name&gt; &lt;servlet-class&gt;org.primefaces.resource.ResourceServlet&lt;/servlet-class&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;Resource Servlet&lt;/servlet-name&gt; &lt;url-pattern&gt;/primefaces_resource/*&lt;/url-pattern&gt; &lt;/servlet-mapping&gt;

e no .xhtml esqueci de colocar o

&lt;p:resources /&gt;

obrigado pela ajuda e eu vou testar também tirar o f:view

um abraço

Só lembrando.
Se você estiver utilizando JSF 2.0 como Primefaces 2.2RC2 não é necessário declarar nenhuma referência do Primefaces no Web.xml.

De acordo com o Getting Started do site, você só precisa declarar a seguinte linha no início de seus xhtml para usar o prime:

xmlns:p="http://primefaces.prime.com.tr/ui"  

E é claro, seu código deve conter a h:head e h:body não é necessário usar o p:resources.

PS: Em relação ao <f:view> ele deve ser utilizado nas páginas sim. Em especial quando vc tiver problemas nos navegadores Safari e Chrome, quando vc não utiliza os componentes do prime dentro desse f:view, eles podem não funcionar corretamente nesses navegadores.

Obrigado vou tentar.

um abraço