JSF - não está ligando xhtml com a classe

Bom dia,
estou iniciando em JSF e não estou conseguindo ligar o xhtml com o bean, segue abaixo os respectivos códigos.

Não dá nenhum erro, porem nao printa a mensagem que está dentro do construtor e nem a do metodo get.

Código xhtml:

<p:dataTable var="produto" value="#{produtoBean.produtos}">
        <p:column headerText="Id">
            <h:outputText value="#{produto.id}"/>
        </p:column>
        <p:column headerText="Tamanho">
            <h:outputText value="#{produto.tamanho}"/>
        </p:column>
        <p:column headerText="Cor">
            <h:outputText value="#{produto.cor}"/>
        </p:column>
        <p:column headerText="Quantidade">
            <h:outputText value="#{produto.quantidade}"/>
        </p:column>
        <p:column headerText="Preco">
            <h:outputText value="#{produto.preco}"/>
        </p:column>
    </p:dataTable>

Classe ProdutoBean:

public class ProdutoBean {
List produtos;
ProdutoDao pdao;

public ProdutoBean() {
    System.out.println("--------------------Contruiu------------");
    this.pdao = new ProdutoDao();
    this.produtos = pdao.getProdutos();
}

public List<Produto> getProdutos(){
    System.out.println("--------------------Entrou------------");
    return this.produtos;
}

}

Bom dia Gustavo,

Onde estão as anotações necessárias no seu ManagedBean?

Olá Weverton,
acabei me esquecendo da anotação mesmo,
mas mesmo após eu inserir a @ManagedBean continua não funcionando.

Boa Tarde Gustavo,

Nos campos onde você colocou #{produto troque para #{produtoBean.produto

Exemplo:
h:outputText value="#{produto.id}" - h:outputText value="#{produtoBean.produto.id}"

Para chamar o método do produtoBean faça assim:

Exemplo:

p:commandButton id=“Listar” value=“Listar” action="#{produtoBean.getProdutos}" ajax=“false”

Esta troca não faz sentido, amigo. A forma que ele usou está correta, pois produto simboliza a variável de cada produto na lista de produtos, onde var é o produto de cada laço e value é a lista de produtos no bean.

<p:dataTable var="produto" value="#{produtoBean.produtos}">

Outro ponto é que não existe um atributo produto no ProdutoBean, o que ocasionaria outro erro.

Minha sugestão é mesma do Weverton, falta a annotation de @ManagedBean ou o registro do bean no faces-config.xml. Exemplo:

@ManagedBean
@ViewScoped
public class MinhaClasse (){}

Veja tb se o FacesServlet está devidamente registrado no web.xml do projeto.

Se quiser “testar” a criação do bean, crie um método qualquer dentro do MB, anote-o com @PostConstruct e printa algo nele. Desta forma vc verá se o MB foi criado. Exemplo:

@ManagedBean
@ViewScoped
public class MinhaClasse (){
  @PostConstruct
  public void init(){
    System.out.print("Bean criado com sucesso....");
  }
}