Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Boa tarde, atualizar minha tabela no jsf

Boa tarde a todos, estou com um pequeno problema, já testei tudo o possivel para atualizar minha tabela, é o seguinte, estou em uma aplicação real de academia, estamos pegando uma API do iugu, que cuida do recorrente, ao cadastrar uma conta com um cartão invalido fiz um gatinho que manda um status, de falha no pagamento, entre outras mensagens apesar disso, antes eu crio um a matricula e logo depois chamo o gatinho do meu cartão se deu falha ou pagamento com sucesso, mais essa mensagem é settada na minha matricula na campo status, porem eu salvo essa matricula antes de salvar o meu cartão com a mensagem, ai claro que a mensagem não irá vir na minha matricula pq salvei a matricula antes ai na tabela minha o meu status vem em branco, por causa msm da mensagem do status vir depois da minha matricula, ai para o cliente não ter que precisar trocar de tela e voltar para a da matricula para pode visualizar a mensagem eu criei um botão quando ele salvar o meu cartão fiz um botão atualizar, o problema é que esse botão não está atualizando a minha tabela no meu html.

<div class="ui-g">
                                    <div class="ui-g-12">
                                        <div class="ui-g-12 ui-md-12">
                                            <p:dataTable id="tblMatricula" widgetVar="tabelaMatricula"
                                                         emptyMessage="Aluno não possui matrículas cadastradas."
                                                         value="#{matriculaMB.matriculas}"
                                                         filteredValue="#{matriculaMB.matriculasFilter}"
                                                         reflow="true"
                                                         var="matricula"
                                                         selectionMode="single" selection="#{matriculaMB.matricula}" rowKey="#{matricula.id}">

                                                <p:column headerText="Modalidade / Plano" sortBy="#{matricula.modalidade.nome}"
                                                          filterBy="#{matricula.modalidade.nome}"
                                                          width="20%" filterStyle="display:none"
                                                          filterMatchMode="contains">
                                                    <h:outputText value="#{matricula.modalidade.nome}" />
                                                </p:column>

                                                <p:column headerText="Status" sortBy="#{matricula.status}"
                                                          filterBy="#{matricula.status}"
                                                          width="20%" filterStyle="display:none"
                                                          filterMatchMode="contains" >
                                                    <h:outputText value="#{matricula.status}" />
                                                </p:column>

                                                <p:column headerText="Data Início" sortBy="#{matricula.data_inicio}"
                                                          filterBy="#{matricula.data_inicio}"
                                                          width="20%" filterStyle="display:none"
                                                          filterMatchMode="contains">
                                                    <h:outputText value="#{matricula.data_inicio}" >
                                                        <f:convertDateTime pattern="dd/MM/yyyy" />
                                                    </h:outputText>
                                                </p:column>

                                                <p:column headerText="Data Fim" sortBy="#{matricula.data_fim}"
                                                          filterBy="#{matricula.data_fim}" 
                                                          width="20%" filterStyle="display:none"
                                                          filterMatchMode="contains">
                                                    <h:outputText value="#{matricula.data_fim}" rendered="#{matricula.planoPagamento != 'BOLSISTA'}">
                                                        <f:convertDateTime pattern="dd/MM/yyyy" />
                                                    </h:outputText>
                                                </p:column>

                                                <p:column headerText="Vencimento" sortBy="#{matricula.vencimento}"
                                                          filterBy="#{matricula.vencimento}"
                                                          width="20%" filterStyle="display:none"
                                                          filterMatchMode="contains">
                                                    <h:outputText value="TODO DIA #{matricula.vencimento}" />
                                                </p:column>

                                                <p:column headerText="Valor Mensal" sortBy="#{matricula.valor}"
                                                          filterBy="#{matricula.valor}"
                                                          width="20%" filterStyle="display:none"
                                                          filterMatchMode="contains">
                                                    <h:outputText value="#{matricula.valor}">
                                                        <f:convertNumber pattern="#0.00" locale="pt_BR"/>
                                                    </h:outputText>
                                                </p:column>

                                                <p:column headerText="Situação" sortBy="#{matricula.ativo}"
                                                          filterBy="#{matricula.ativo}"
                                                          width="20%" filterStyle="display:none"
                                                          filterMatchMode="contains">
                                                    <h:outputText value="#{matricula.ativo ? 'ATIVA' : 'DESATIVADA'}" />
                                                </p:column>

                                                <p:column headerText="Atendente" sortBy="#{matricula.colaborador.nome}"
                                                          filterBy="#{matricula.colaborador.nome}"
                                                          width="20%" filterStyle="display:none"
                                                          filterMatchMode="contains">
                                                    <h:outputText value="#{matricula.colaborador.nome}" />
                                                </p:column>
                                            </p:dataTable>
                                        </div>
                                    </div>
                                </div>
2 respostas

na minha tabela tem a coluna do status, que seria da mensagem, ai fiz um botão para atualizar.

<p:commandButton rendered="#{AlunoBean.academia.idAcademia == '2'}" actionListener="#{matriculaMB.carregarTabelaStatus}" 
                                                     update="tblMatricula" type="buton" value="Atualizar" onclick="PF('statusDialog').show();" oncomplete="PF('statusDialog').hide();">
                                                </p:commandButton>

O metodo para chamar minhas matriculas novamente para atualizar a pagina é esse, mais não está atualizando a minha pagina :(

public void carregarTabelaStatus()  {
        System.out.println("Chamou o metodo");
        this.matriculas = matriculaDao.consultar(sql);
        for (Matricula m: matriculas) {
            System.out.println("Matriculas : " + m.getStatus());
        }
    }
solução!

Michel, tudo bem ?

Acho que vale super a pena você ter duas telas ai cara.

Você cadastrar o aluno, não depende se ele paga ou não.

Ai na segunda tela, você teria o pagamento que ai você faria a consulta na api e poderia ficar aguardando o processamento para falar se deu certo ou não.

Acho que vale super a pena fazer dessa maneira