[RESOLVIDO]Variavel zerada ao recarregar tela

Tenho uma tela onde preciso fazer rateio de valores, tenho 3 campos, estabelecimento, classificação e porcentagem
Apos informar os 3 campos, teria que adicionar os itens ao meu datatable, porém o que acaba acontecendo é que quando é feito o processo para armazenar nas minhas variveis, ele simplesmente zera ela

meu xhtml:

 <p:panel id="pnl_estb" header="Adicionar Estabelecimento(s)" closable="false" toggleSpeed="500" closeSpeed="2000" widgetVar="panelEstabs" >
                        <h:panelGrid columns="2" id="grid">
                            <h:outputLabel id="llestab" value="Estabelecimento:"/>
                            <p:selectOneMenu id="sOMestab" value="#{gravaAbreChamadosMarketing.campoMoveis.idEstabelecimento}" height="100" required="true">
                                <f:selectItem itemLabel="Selecionar um Estabelecimento" itemValue="0" />
                                <f:selectItems id="fsestab" value="#{gravaAbreChamadosMarketing.listaEstabelecimentos()}"
                                               var="item" itemLabel="#{item.descricao}"
                                               itemValue="#{item.id}" />
                            </p:selectOneMenu>


                            <h:outputLabel id="lclassificacao" value="Classificação:"/>
                            <p:selectOneMenu id="sOclassificacao" value="#{gravaAbreChamadosMarketing.campoMoveis.classificacao}" height="100" required="true">
                                <f:selectItem itemLabel="Selecionar uma Classificação" itemValue="0" />
                                <f:selectItem itemLabel="Comercial/Operacional" itemValue="1" />
                                <f:selectItem itemLabel="Custo" itemValue="2" />
                                <f:selectItem itemLabel="Custo Ajudante Distribuição" itemValue="3" />
                                <f:selectItem itemLabel="Custo Armazenagem" itemValue="4" />
                                <f:selectItem itemLabel="Custo Equipamentos" itemValue="5" />
                                <f:selectItem itemLabel="Custo Motorista Distribuição" itemValue="6" />
                                <f:selectItem itemLabel="Despesa" itemValue="7" />
                            </p:selectOneMenu>

                            <h:outputLabel value="Percentual:"/>
                            <p:inputText id="iporcentagem" required="true"
                                         value="#{gravaAbreChamadosMarketing.campoMoveis.porcentagem}"/>

                            <p:commandButton id="btn_add" value="Adicionar" update="pestabs @parent dtestabs"
                                             action="#{gravaAbreChamadosMarketing.addEstabs()}" >
                                <p:collector value="#{gravaAbreChamadosMarketing.campoMoveis}"
                                             addTo="#{gravaAbreChamadosMarketing.camposMoveis}" />
                            </p:commandButton>
                        </h:panelGrid>


                        <p:outputPanel id="pestabs">
                            <p:dataTable id="dtestabs" value="#{gravaAbreChamadosMarketing.camposMoveis}" var="est" emptyMessage="Nenhum Registro">

                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Estabelecimento" />
                                    </f:facet>
                                    <h:outputText value="#{est.nomeEstabelecimento}" />
                                </p:column>

                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Classificação" />
                                    </f:facet>
                                    <h:outputText value="#{est.descricaoClassificacao}" />
                                </p:column>

                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Percentual" />
                                    </f:facet>
                                    <h:outputText value="#{est.porcentagem}" />
                                </p:column>

                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Excluir" />
                                    </f:facet>
                                    <p:commandLink value="Excluir" update=":form:pestabs" process=":form:pestabs">
                                        <p:collector value="#{est}"
                                                     removeFrom="#{gravaAbreChamadosMarketing.camposMoveis}" />
                                    </p:commandLink>
                                </p:column>

                            </p:dataTable>
                        </p:outputPanel>
                    </p:panel>

Meu bean:

private CamposChamadosAlocacao campoMoveis;
    private ArrayList<CamposChamadosAlocacao> camposMoveis = new ArrayList<CamposChamadosAlocacao>();
    

    public CamposChamadosAlocacao getCampoMoveis() {
        return campoMoveis;
    }

    public void setCampoMoveis(CamposChamadosAlocacao campoMoveis) {
        this.campoMoveis = campoMoveis;
    }

    public ArrayList<CamposChamadosAlocacao> getCamposMoveis() {
        return camposMoveis;
    }

    public void setCamposMoveis(ArrayList<CamposChamadosAlocacao> camposMoveis) {
        this.camposMoveis = camposMoveis;
    }


public gravaAbreChamadosMarketing() {
        //Creator
        upLoadChamado = new CamposUploadChamado();
        campoMoveis = new CamposChamadosAlocacao();
    }




public String addEstabs() {
        int ii = 0;
        float nPerc = 0;
        for (int i = 0; camposMoveis.size() > i; i++) {
            ii++;
            nPerc = nPerc + camposMoveis.get(i).getPorcentagem();
        }
        if (campoMoveis.getIdEstabelecimento() == 0 || campoMoveis.getClassificacao() == 0 || campoMoveis.getPorcentagem() == 0) {
            camposMoveis.remove(ii - 1);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Necessário o preenchimento de todos os campos", ""));
            return "chamados";
        } else {

            if (nPerc > 100) {
                camposMoveis.remove(ii - 1);
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Não é possível adicionar mais estabelecimentos. Percentual igual a 100%", ""));
                return "chamados";
            }

            try {
                rs = Conexao.Consulta("select descricao || ' - ' || numero as nome from geral_estabelecimentos where cod_ctrl = " + campoMoveis.getIdEstabelecimento().toString());
                while (rs.next()) {
                    campoMoveis.setNomeEstabelecimento(rs.getString("nome"));
                }

                switch (campoMoveis.getClassificacao()) {
                    case 1:
                        campoMoveis.setDescricaoClassificacao("Comercial/Operacional");
                        break;
                    case 2:
                        campoMoveis.setDescricaoClassificacao("Custo");
                        break;
                    case 3:
                        campoMoveis.setDescricaoClassificacao("Custo Ajudante Distribuição");
                        break;
                    case 4:
                        campoMoveis.setDescricaoClassificacao("Custo Armazenagem");
                        break;
                    case 5:
                        campoMoveis.setDescricaoClassificacao("Custo Equipamento");
                        break;
                    case 6:
                        campoMoveis.setDescricaoClassificacao("Custo Motorista Distribuição");
                        break;
                    case 7:
                        campoMoveis.setDescricaoClassificacao("Despesa");
                        break;
                }
                campoMoveisFixo = campoMoveis;
                campoMoveis = new CamposChamadosAlocacao();
                return "chamados";
            } catch (SQLException ex) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao adicionar Estabelecimentos", ex.getMessage()));
            }
        }
        return "chamados";

    } 

Quando chega no meu creator simplesmente o meu CAMPOSMOVEIS está null pois eu inicio ele na declaração, tentei já iniciar ele de varias formas, mas sempre recarrega a tela com a variavel null

Alguem sabe alguma dica?

Alguem tem alguma ideia de como eu faço para que o Add carregue as informaçoes já adicionadas na variavel, e que a variavel seja inicializada somente uma vez?

<p:commandButton id="btn_add" value="Adicionar" update="pestabs @parent dtestabs"  
                                            action="#{gravaAbreChamadosMarketing.addEstabs()}" >  
                               <p:collector value="#{gravaAbreChamadosMarketing.campoMoveis}"  
                                            addTo="#{gravaAbreChamadosMarketing.camposMoveis}" />  
                           </p:commandButton>  

Obrigado!

Alguém tem alguma ideia de como fazer com que essa variavel so seja alimentada uma vez para nao perder o conteudo?

Ou que eu tenha um metodo que seja executado somente uma vez?

Estou precisando muito disso!

Obrigado!

Cria um construtor no seu bean e inicializa esse atributo la.

Tive que criar uma outra classe somente para poder trabalhar com esses dados, invoco essa classe no meu xhtml e a classe só é instanciada uma vez, logo nao zera mais a variavel.

Obrigado!