[Resolvido]-Atualizar página web + JSF

Boa tarde galera, tudo certo? Bem, na minha aplicação estou fazendo as rematrículas automáticas dos alunos de uma turma. Nela, faço o seguinte: tenho uma lista de matrículas (matriculasListSemLazy-> essa lista contém alunos aprovados e reprovados). Bem, em um método estou separando os alunos Aprovados para uma lista e os Reprovados em outra. Os alunos Aprovados serão Rematriculados para uma turma do próximo ano e os Rematriculados a mesma coisa. O método já está funcionando, os alunos já estão sendo separados, só que não estou conseguindo atualizar a tela.
Por exemplo, tenho dois alunos ( um aprovado e outro reprovado). Vou rematriculá-los, escolhi a turma de cada um e executei o método. GEROU A REMATRÍCULA. Porém, se ele clicar em gerar rematrícula novamente, esses alunos são REMATRICULADOS NOVAMENTE. Onde, que, pelo certo, ele deveria “cair” em um validador para ver que as listas não estão vazias e que esses alunos já estão rematriculados. Mas, se após eu gerar a rematrícula para os alunos eu der um F5 na página, ele “cai” no validador e verifica que a lista não está vazia. Abaixo, o xhtml:

<?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">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:treap="http://java.sun.com/jsf/composite/treap"
      xmlns:p="http://primefaces.org/ui">

    <body>
        <ui:composition template="./default_layout_with_menu.xhtml">
            <ui:define name="titulo-pagina">
                Rematrícula Automática
            </ui:define>
            <ui:define name="content">
                <treap:ajaxStatus/>

                <p:growl id="growl2" life="4000"/>
                <p:focus for="escola"/>
                    
                    <p:panel id="dados" header="Dados Principais" >
                        <h:panelGrid columns="3" width="100%">
                            <h:panelGrid columns="2">

                                <p:outputLabel id="ano_label" value="Ano Atual:" for="ano"/> 
                                <h:outputText id="ano" value="#{matriculaJsfBean.ano}"/>

                                <p:outputLabel id="escola_label" value="Escola Atual:" for="escola"/>  
                                <p:selectOneMenu id="escola"  value="#{matriculaJsfBean.escolaRematricula}"  filter="true" required="true" requiredMessage="Selecione a Escola." caseSensitive="false" filterMatchMode="contains">
                                    <f:selectItem itemLabel="Selecione" itemValue="#{null}"/>
                                    <f:selectItems value="#{matriculaJsfBean.escolaList}" var="e" itemLabel="#{e.codigo} - #{e.nome}" itemValue="#{e.codigo}"/>
                                    <p:ajax update="turma novaTurmaA novaTurmaR" event="change" listener="#{matriculaJsfBean.atualizarTurmaPorEscolaSemSessao(event)}"/>
                                </p:selectOneMenu>

                                <p:outputLabel id="turma_label" value="Turma Atual:" for="turma"/>  
                                <p:selectOneMenu id="turma" converter="sec" value="#{matriculaJsfBean.turma}"  filter="true" required="true" requiredMessage="Selecione a Turma." caseSensitive="false" filterMatchMode="contains">
                                    <f:selectItem itemLabel="Selecione" itemValue="#{null}"/>
                                    <f:selectItems value="#{matriculaJsfBean.turmaList}" var="t" itemLabel="#{t.codigo} - #{t.descricao}" itemValue="#{t}"/>
                                </p:selectOneMenu>

                            </h:panelGrid>
                            <h:panelGrid columns="2">

                                <p:outputLabel id="proximoAnoA_label" value="Próximo Ano:" for="proximoAnoA"/> 
                                <h:outputText id="proximoAnoA" value="#{matriculaJsfBean.proximoAno}"/>

                                <p:outputLabel id="novaTurmaA_label" value="Nova Turma Aprovados:" for="novaTurmaA"/>  
                                <p:selectOneMenu id="novaTurmaA"  converter="sec" value="#{matriculaJsfBean.novaTurma}" filter="true" required="true" requiredMessage="Selecione a Turma Destino." caseSensitive="false" filterMatchMode="contains">
                                    <f:selectItem itemLabel="Selecione" itemValue="#{null}"/>
                                    <f:selectItems value="#{matriculaJsfBean.turmaListDestino}"  var="t" itemLabel="#{t.ano} - #{t.descricao}" itemValue="#{t}"/>
                                </p:selectOneMenu>

                            </h:panelGrid>

                            <h:panelGrid columns="2">

                                <p:outputLabel id="proximoAnoR_label" value="Próximo Ano:" for="proximoAnoR"/>                         
                                <h:outputText id="proximoAnoR" value="#{matriculaJsfBean.proximoAno}"/>

                                <p:outputLabel id="novaTurmaR_label" value="Nova Turma Reprovados:" for="novaTurmaR"/>  
                                <p:selectOneMenu id="novaTurmaR"  converter="sec" value="#{matriculaJsfBean.novaTurmaReprovados}" filter="true" required="true" requiredMessage="Selecione a Turma Destino." caseSensitive="false" filterMatchMode="contains">
                                    <f:selectItem itemLabel="Selecione" itemValue="#{null}"/>
                                    <f:selectItems value="#{matriculaJsfBean.turmaListDestino}"  var="tR" itemLabel="#{tR.ano} - #{tR.descricao}" itemValue="#{tR}"/>
                                </p:selectOneMenu>

                            </h:panelGrid>

                        </h:panelGrid>
                        <br/>
                        <p:commandButton id="BtnfiltraMatricula" actionListener="#{matriculaJsfBean.atualizar()}" value="Consultar" update="tabela1 tabela2 tabela3 @form" process="dados @form" image="search"/>
                        <p:commandButton action="#{matriculaJsfBean.geraRematricula()}" value="Gerar Rematrícula" update="@form" image="ok"/>

                        <p:confirmDialog id="confirmDialogA" message="Ultrapassou #{matriculaJsfBean.vagasIndisponiveisTurmaAprovados} das vagas para rematrícula de aprovados. Continuar?" header="Rematrícula Aprovados" severity="alert" widgetVar="vagasTurmaAprovados">
                            <p:commandButton id="confirmA" value="Sim" update="@form" oncomplete="vagasTurmaAprovados.hide()" actionListener="#{matriculaJsfBean.rematAlunos_A_R_novaTurma()}" image="ok"/>
                            <p:commandButton id="declineA" value="Cancelar" onclick="vagasTurma.hide();" image="cancel2"/>
                        </p:confirmDialog>

                        <p:confirmDialog id="confirmDialogR" message=" Ultrapassou #{matriculaJsfBean.vagasIndisponiveisTurmaReprovados} das vagas para rematrícula de reprovados. Continuar?" header="Rematrícula Reprovados" severity="alert" widgetVar="vagasTurmaReprovados">
                            <p:commandButton id="confirmR" value="Sim" update="@form" oncomplete="vagasTurmaReprovados.hide()" actionListener="#{matriculaJsfBean.rematAlunos_A_R_novaTurma()}" image="ok"/>
                            <p:commandButton id="declineR" value="Cancelar" onclick="vagasTurma.hide();" image="cancel2"/>
                        </p:confirmDialog>

                        <p:confirmDialog id="confirmDialogAR" message="Ultrapassou #{matriculaJsfBean.vagasIndisponiveisTurmaAprovados} das vagas para rematrícula de aprovados e #{matriculaJsfBean.vagasIndisponiveisTurmaReprovados} para rematricula de reprovados. Continuar?" header="Rematrícula" severity="alert" widgetVar="vagasTurmaAprovadoReprovado">

                            <p:commandButton id="confirmAR3" value="Sim" update="@form" oncomplete="vagasTurmaAprovadoReprovado.hide()" actionListener="#{matriculaJsfBean.rematAlunos_A_R_novaTurma()}" image="ok"/>
                            <p:commandButton id="declineAR" value="Cancelar" onclick="vagasTurma.hide();" image="cancel2"/>
                        </p:confirmDialog>

                        <br/><br/>
                        <p:dataTable id="tabela1"
                                     value="#{matriculaJsfBean.matriculasListSemLazy}"
                                     var="item"
                                     emptyMessage="Nenhum registro encontrado."
                                     paginator="false"
                                     lazy="false">

                            <f:facet name="header">
                                Rematrículas de Alunos Turma : #{matriculaJsfBean.turma.ano} #{matriculaJsfBean.turma}
                            </f:facet>

                            <p:column headerText="Código" sortBy="#{item.codigo}" style="width:07%">
                                <h:outputText value="#{item.codigo}"/>
                            </p:column>

                            <p:column headerText="Aluno">
                                <h:outputText value="#{item.aluno.nome}"/>
                            </p:column>

                            <p:column headerText="Situação">
                                <h:outputText value="#{item.statusCompleto}"/>
                            </p:column>

                        </p:dataTable>
                        <br/>
                    </p:panel>
                    <br/><br/>

                    <p:panel id="panelTabela">
                        <p:panelGrid columns="2" style="width: 100%">

                            <p:dataTable id="tabela2"
                                         value="#{matriculaJsfBean.rematriculaAprovados}"
                                         var="item"
                                         emptyMessage="Nenhum registro encontrado."
                                         paginator="true"
                                         rows="10"
                                         pageLinks="5"
                                         paginatorPosition="bottom"
                                         paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink}
                                         {PageLinks} {NextPageLink} {LastPageLink} Exibir: {RowsPerPageDropdown}
                                         Encontrados: #{matriculaJsfBean.rematriculaAprovados.size()}"
                                         rowsPerPageTemplate="10,25,35,50"
                                         lazy="false">
                                <f:facet name="header">
                                    Matrícula Alunos Aprovados Turma: #{matriculaJsfBean.novaTurma.ano} #{matriculaJsfBean.novaTurma}
                                </f:facet>

                                <p:column headerText="Código" sortBy="#{item.codigo}" style="width:07%">
                                    <h:outputText value="#{item.codigo}"/>
                                </p:column>

                                <p:column headerText="Aluno">
                                    <h:outputText value="#{item.aluno.nome}"/>
                                </p:column>
                            </p:dataTable>

                            <p:dataTable id="tabela3"
                                         value="#{matriculaJsfBean.rematriculaReprovados}"
                                         var="item"
                                         emptyMessage="Nenhum registro encontrado."
                                         paginator="true"
                                         rows="10"
                                         pageLinks="5"
                                         paginatorPosition="bottom"
                                         paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink}
                                         {PageLinks} {NextPageLink} {LastPageLink} Exibir: {RowsPerPageDropdown}
                                         Encontrados: #{matriculaJsfBean.rematriculaReprovados.size()}"
                                         rowsPerPageTemplate="10,25,35,50"
                                         lazy="false">

                                <f:facet name="header">
                                    Matrícula Alunos Reprovados Turma: #{matriculaJsfBean.novaTurmaReprovados.ano} #{matriculaJsfBean.novaTurmaReprovados}
                                </f:facet>
                                <p:column headerText="Código" sortBy="#{item.codigo}" style="width:07%">
                                    <h:outputText value="#{item.codigo}"/>
                                </p:column>

                                <p:column headerText="Aluno">
                                    <h:outputText value="#{item.aluno.nome}"/>
                                </p:column>
                            </p:dataTable>
                        </p:panelGrid>
                    </p:panel>
            </ui:define>
        </ui:composition>
    </body>
</html>

Na linha 71 que tenho método geraRematrícula. Abaixo o bean:

    private Turma novaTurma = new Turma();
    private Turma novaTurmaReprovados = new Turma();
    private Turma turma;
    private List<Matricula> rematriculaAprovados = new ArrayList<Matricula>();  
    private List<Matricula> rematriculaReprovados = new ArrayList<Matricula>();  
    private List<Matricula> matriculasListSemLazy = new ArrayList<Matricula>();
    private List<Matricula> rematriculaAprovadosAuxiliar = new ArrayList<Matricula>();  
    private List<Matricula> rematriculaReprovadosAuxiliar = new ArrayList<Matricula>(); 

  @Override
    public void atualizar() {
  matriculasListSemLazy.clear();
        rematriculaAprovados.clear();
        rematriculaReprovados.clear();
        matriculasListSemLazy = crudService.executeNativeQuery("select * from edu_matriculas m "
                + "inner join edu_escolas e on m.mat_codescola = e.esc_codigo "
                + "inner join edu_turmas t on t.tur_codigo = m.mat_codturma "
                + "where m.mat_codescola = " + escolaRematricula + ""
                + "and m.mat_codturma = " + turma.getCodigo() + "", Matricula.class);
        rematriculaAprovados = crudService.executeNativeQuery("select * from edu_matriculas m "
                + "inner join edu_escolas e on m.mat_codescola = e.esc_codigo "
                + "inner join edu_turmas t on t.tur_codigo = m.mat_codturma "
                + "where m.mat_codescola = " + escolaRematricula + ""
                + "and m.mat_codturma = " + novaTurma.getCodigo() + "", Matricula.class);
        rematriculaReprovados = crudService.executeNativeQuery("select * from edu_matriculas m "
                + "inner join edu_escolas e on m.mat_codescola = e.esc_codigo "
                + "inner join edu_turmas t on t.tur_codigo = m.mat_codturma "
                + "where m.mat_codescola = " + escolaRematricula + ""
                + "and m.mat_codturma = " + novaTurmaReprovados.getCodigo() + "", Matricula.class);
    }

  public void geraRematricula() {

        for (Matricula matricula : matriculasListSemLazy) {
            if (matricula.getStatus().equals("A")) {
                rematriculaAprovadosAuxiliar.add(matricula);
            } else if (matricula.getStatus().equals("R")) {
                rematriculaReprovadosAuxiliar.add(matricula);
            }
        }

        if (rematriculaReprovadosAuxiliar.size() > novaTurmaReprovados.getDisponivel() && rematriculaAprovadosAuxiliar.size() < novaTurma.getDisponivel()) {
            primeFacesExecute("vagasTurmaReprovados.show();");

        } else if (rematriculaAprovadosAuxiliar.size() > novaTurma.getDisponivel() && rematriculaReprovadosAuxiliar.size() < novaTurmaReprovados.getDisponivel()) {
            primeFacesExecute("vagasTurmaAprovados.show();");

        } else if (rematriculaAprovadosAuxiliar.size() > novaTurma.getDisponivel() && rematriculaReprovadosAuxiliar.size() > novaTurmaReprovados.getDisponivel()) {
            primeFacesExecute("vagasTurmaAprovadoReprovado.show();");
        } else {
            rematAlunos_A_novaTurma();
            rematAlunos_R_novaTurma();
        }
        atualizar();
    }

    public void rematAlunos_A_R_novaTurma() {
        rematAlunos_A_novaTurma();
        rematAlunos_R_novaTurma();
        atualizar();
    }

    public void rematAlunos_A_novaTurma() {
        try {
            if (novaTurma != null && !novaTurma.getMatriculaCollection().isEmpty()) {
                Iterator<Matricula> it = rematriculaAprovadosAuxiliar.iterator();
                while (it.hasNext()) {
                    Matricula matParaRematricular = it.next();
                    for (Matricula matNovaTurma : novaTurma.getMatriculaCollection()) {
                        if (matParaRematricular.getAluno().getCodigo().toString().equals(matNovaTurma.getAluno().getCodigo().toString())) {
                            it.remove(); 
                        }
                    }
                }
                for (Matricula novaMatricula : rematriculaAprovadosAuxiliar) {
                    matriculaAlunos(novaMatricula, novaTurma);
                }
                info("Matriculas da turma " + novaTurma.getDescricao() + ", atualizadas");
            } else {
                for (Matricula novaMatricula : rematriculaAprovadosAuxiliar) {
                    matriculaAlunos(novaMatricula, novaTurma);
                }
                info("Alunos rematriculados para a turma " + novaTurma.getDescricao() + ".");
            }

        } catch (Exception exception) {
            fatal("Erro ao gerar as matrículas automáticas");
            fatal(exception.getMessage());
        } finally {
            atualizar();
        }
    }

Meu rematAlunos_R_novaTurma(); faz a mesma coisa que o rematAlunos_A_novaTurma(). Se alguém souber como posso fazer algum tipo de update ou algo similar, ou até mesmo para desabilitar o botão Gera Rematrícula, pois a parte de gerar a rematrícula está funcionando. Além disso, se após eu gerar a rematrícula para os alunos eu der um F5 na página, ele “cai” no validador e verifica que a lista não está vazia…Se alguém puder ajudar, agradeço mto…Vlw

Bem, achei um método que dá um refresh na página inteira, mas não seria bem isso que eu queria…Alguém tem mais alguma idéia do que eu poderia fazer para atualizar a página ??

public void refresh() {
        FacesContext context = FacesContext.getCurrentInstance();
        Application application = context.getApplication();
        ViewHandler viewHandler = application.getViewHandler();
        UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId());
        context.setViewRoot(viewRoot);
        context.renderResponse();
    }

Bom dia galera, alguém poderia dar uma ajuda aí?? Se alguém puder ajudar, agradeço mto…Vlw