DataTable não exibe os dados JSF [RESOLVIDO]

Boa tarde, escrevi um código para realizar o cadastro de alguns produtos e exibi-los em uma dataTable. Os produtos são cadastrados dentro de um ArrayList e consigo exibi-los através do terminal de saída da IDE, mas eles não aparecem na dataTable. Poderiam me dar uma ajuda para resolver esse problema?

Página de exibição:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:decorate xmlns="http://www.w3.org/1999/xhtml"
             xmlns:h="http://xmlns.jcp.org/jsf/html"   
             xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
             xmlns:p="http://primefaces.org/ui"
             xmlns:f="http://xmlns.jcp.org/jsf/core"
             template="template.xhtml">
    
    <ui:define name="conteudo">
        <h:form id="form">
                <p:dataTable id="tabela" var="produtos" value="#{bean.produtos}">
                    <f:facet name="header">
                        Produtos
                    </f:facet>
                    <p:column headerText="Nome">
                        <h:outputText value="#{produtos.nome}"/>
                    </p:column>
                    <p:column headerText="Valor">
                        <h:outputText value="#{produtos.valor}"/>
                    </p:column>
                    <p:column headerText="Código">
                        <h:outputText value="#{produtos.codigo}"/>
                    </p:column>
                </p:dataTable> 
        </h:form>
    </ui:define>
</ui:decorate>

Página de cadastro

<ui:define name=“conteudo”>

Cadastrar Produtos
<h:form>
<h:panelGrid columns=“2”>
<h:outputLabel value=“Nome: “/>
<h:inputText id=“nome” value=”#{bean.prod.nome}”/>
<h:outputLabel value=“Valor: “/>
<h:inputText id=“valor” value=”#{bean.prod.valor}”/>
<h:outputLabel value=“Código: “/>
<h:inputText id=“codigo” value=”#{bean.prod.codigo}”/>
</h:panelGrid>
<h:commandButton value=“Cadastrar” action="#{bean.cadastrarProduto()}"
style=“background-color: bisque”>
</h:commandButton>
</h:form>

</ui:define>

Bean

public class Bean {

/**
 * Creates a new instance of Bean
 */
public Bean() {
}

//Arrays
private ArrayList produtos = new ArrayList();
//Variáveis
private Produto prod = new Produto();
//Getters e Setters
public ArrayList getProdutos() {
return produtos;
}

public void setProdutos(ArrayList<Produto> produtos) {
    this.produtos = produtos;
}

public Produto getProd() {
    return prod;
}

public void setProd(Produto prod) {
    this.prod = prod;
}
public void cadastrarProduto(){
    Produto auxiliar01 = new Produto();
    
    auxiliar01.setNome(prod.getNome());
    auxiliar01.setValor(prod.getValor());
    auxiliar01.setCodigo(prod.getCodigo());
    
    produtos.add(auxiliar01);
    
    prod.setNome("");
    prod.setValor("");
    prod.setCodigo("");
    
    imprimirPrompt();
}

É assim que você criou o seu bean?
Sem anotação?

Faltam as anotações e você deve retirar o () do Commandbutton, você também precisa adicionar a ele processo="@form" e ajax=“false” uma vez que você utilizou action ao invés de actionListener

Não é necessário tirar o ().
Ele esta usando h:commandButton, não tem process e nem ajax.

Desculpe a demora Mike, tive uns problemas com o computador.
No momento de enviar esqueci de colocar as anotações, mas resultou que o problema estava lá mesmo, meu código continha o @RequestScoped, modifiquei para @SessionScoped e então passou a funcionar corretamente.
Muito obrigado pela atenção e mais uma vez desculpa a demora.

Murilo, fiz aqui as alterações das anotações e também estas que me recomendou, ficou bem bacana e está funcionando corretamente agora. Muito obrigado pela atenção.

Sim, se tivesse postado as anotações o problema seria resolvido rapidinho :slight_smile:
Se estiver na mesma view, o ViewScoped pode ser usado também.

Magina :+1: