Primefaces - Обновить данные - PullRequest
       23

Primefaces - Обновить данные

0 голосов
/ 17 октября 2019

В моем приложении у меня есть таблица PessoaFuncao.

При включении регистра у меня есть дата транзакции, название функции и статус проводки, текущий или нет.

Когда я открываю экран для этой функции, появляется история сервера, например

01/01/2019 неактивный программист 01/03/2019 активный аналитик

Когда я добавляю новую запись, например, 01/09/2019 активный супервизор, по триггеру, в базу данных, последняя запись, которая была до сих пор, имеет статус неактивной. дата должна появиться 01.01.2009, не текущий программист, 03.01.2009, не текущий аналитик, 09.01.2009 активный руководитель

однако он выглядит так:

01/01/2019 нет-активный программист 03/03/2019 активный аналитик1015 *

Мне кажется, что когда я выбираю повторную сборку списка данных, список не переделывается. Как я могу это сделать?

            <h:form id="PessoaFuncaoListForm"       
                    >

                <p:dataTable id="tblPessoaFuncao" value="#{pessoaFuncaoBean.listaPessoaFuncao}" var="item"
                             selectionMode="single" selection="#{pessoaFuncaoBean.pessoaFuncao}"
                             paginator="true"
                             paginatorPosition="bottom"
                             rowKey="#{item.id}"
                             rows="10"
                             rowsPerPageTemplate="10,20,30,40,50"
                             widgetVar="tabelaPessoaFuncao"
                             sortBy="#{item.data}"
                             sortOrder="ascending"

                             >
                    <f:facet name="header">
                        #{mensagem.listaPessoaFuncao} #{pessoaBean.pessoa.nome} 
                    </f:facet>

                    <p:ajax event="rowSelect"   update="createButton editButton voltarButton" />
                    <p:remoteCommand name="onCellEdit" actionListener="#{pessoaFuncaoBean.read()}" update="tblPessoaFuncao"/>
                    <p:column filterBy="#{item.data}" filterMatchMode="exact"  
                              style="width:10%;" filterStyle="width:70%;"
                              sortBy="#{item.data}" 
                              >
                        <f:facet name="header">
                            <h:outputText value="#{mensagem.data}" />
                        </f:facet>
                        <h:outputText value="#{item.dataForm}" >
                            <f:convertDateTime pattern="dd/MM/yyyy" />
                        </h:outputText>                    
                    </p:column>

                    <p:column filterBy="#{item.funcao}" 
                              headerText="#{mensagem.funcao}" 
                              filterMatchMode="exact"
                              style="width:30%;"  filterStyle="width:80%;"  
                              sortBy="#{item.funcao}" 
                              >
                        <f:facet name="filter">
                            <p:selectOneMenu onchange="PF('tabelaPessoaFuncao').filter()"   style="width:90%;">
                                <f:selectItem itemLabel="#{mensagem.todos}"
                                              noSelectionOption="true" />
                                <f:selectItems value="#{funcaoBean.listaFuncao}" 
                                               itemLabel="#{funcaoBean.funcao.descricao}" 
                                               var="#{funcaoBean.funcao.id}" />
                            </p:selectOneMenu>

                        </f:facet>
                        <h:outputText value="#{item.funcao}"/>
                    </p:column>                  

                    <p:column sortBy="#{item.observacao}" filterBy="#{item.observacao}" filterMatchMode="contains"
                              filterStyle="width:70%;">
                        <f:facet name="header">
                            <h:outputText value="#{mensagem.observacao}" />
                        </f:facet>
                        <h:outputText value="#{item.observacao}"/>
                    </p:column>

                    <p:column filterBy="#{item.vigente}" 
                              headerText="#{mensagem.vigente}" 
                              filterMatchMode="exact"
                              >
                        <f:facet name="filter">
                            <p:selectOneMenu onchange="PF('tabelaPessoaFuncao').filter()"  >
                                <f:selectItem itemLabel="#{mensagem.todos}"
                                              noSelectionOption="true" />
                                <f:selectItems value="#{enumVigenteBean.enumVigentes}" var="vigente"
                                               itemValue="#{vigente}" itemLabel="#{vigente.descricao}" />
                            </p:selectOneMenu>

                        </f:facet>
                        <h:outputText value="#{item.vigente.descricao}"/>
                    </p:column>                  

                    <f:facet name="footer">
                        <p:commandButton id="createButton"  actionListener="#{pessoaFuncaoBean.prepareCreate()}" icon="ui-icon-plus"   
                                         value="#{mensagem.incluir}"  action="/pessoaFuncao/create.xhtml" 
                                         disabled="#{!perfilUsuarioTagAcessoBean.verificarPermissaoAcesso(permissoes.PESSOA_FUNCAO_CREATE)}"/>
                        <p:commandButton id="editButton"    icon="ui-icon-pencil" value="#{mensagem.alterar}" 
                                         action="/pessoaFuncao/update.xhtml" 
                                         disabled="#{(empty pessoaFuncaoBean.pessoaFuncao) 
                                                     || (!perfilUsuarioTagAcessoBean.verificarPermissaoAcesso(permissoes.PESSOA_FUNCAO_UPDATE))}"/>
                        <p:commandButton id="voltarButton"  icon="ui-icon-close"   value="#{mensagem.voltar}"  action="#{pessoaBean.voltaPessoa()}"                                         />

                    </f:facet>
                </p:dataTable>

                <h:commandLink>
                    <p:graphicImage library="imagens" name="excel.png" />
                    <p:dataExporter type="xls" target="tblPessoaFuncao" fileName="tabelaPessoaFuncao" pageOnly="true"/>
                </h:commandLink>

                <h:commandLink>
                    <p:graphicImage library="imagens" name="pdf.png" />
                    <p:dataExporter type="pdf" target="tblPessoaFuncao" fileName="tabelaPessoaFuncao" pageOnly="true" />
                </h:commandLink>                
            </h:form>

Боб:

    @Override
    public String create() {
        pessoaFuncao.setId(gerarNovoId(pessoaFuncaoDao));
        criarObjeto(pessoaFuncaoDao, pessoaFuncao);
        pessoaFuncaoDao.acertaVigencia(pessoaFuncao);

        this.listaPessoaFuncao.clear();;
        read();

        limparReferenciaObjeto();
        return "/pessoaFuncao/list";
    }

    /**
     * Lê lista de progressões
     */
    @Override
    public void read() {
        listaPessoaFuncao = pessoaFuncaoDao.findAllPessoaFuncaoByPessoa(pessoa);
    }

    /**
     * Atualiza pessoaFuncao
     *
     * @return Caminho que o navegador será direcionado
     */
    @Override
    public String update() {
        atualizarObjeto(pessoaFuncaoDao, pessoaFuncao);
        read();
        limparReferenciaObjeto();
        return "/pessoaFuncao/list";
    }

    /**
     * Inicializa a instiuição
     */
    @Override
    public void prepareCreate() {
        pessoaFuncao = new PessoaFuncao();
        pessoaFuncao.setPessoa(this.pessoa);
    }

    /**
     * Define pessoaFuncao como null
     */
    @Override
    public void limparReferenciaObjeto() {
        pessoaFuncao = null;
    }

    public PessoaFuncao getPessoaFuncao() {
        return pessoaFuncao;
    }

    public void setPessoaFuncao(PessoaFuncao pessoaFuncao) {
        this.pessoaFuncao = pessoaFuncao;
    }

    public PessoaFuncao getPessoaFuncaoNew() {
        return pessoaFuncaoNew;
    }

    public void setPessoaFuncaoNew(PessoaFuncao pessoaFuncaoNew) {
        this.pessoaFuncaoNew = pessoaFuncaoNew;
    }

    public List<PessoaFuncao> getListaPessoaFuncao() {
        return listaPessoaFuncao;
    }

    public void setListaPessoaFuncao(List<PessoaFuncao> listaPessoaFuncao) {
        this.listaPessoaFuncao = listaPessoaFuncao;
    }

    public void setPessoa(Pessoa paramPessoa) {
        this.pessoa = paramPessoa;
        read();
    }

Дао

    public List<PessoaFuncao> findAllPessoaFuncaoByPessoa(Pessoa pessoa) {
        //System.err.println(pessoa.toString());

        try {
            return findAllPessoaFuncaoByPessoaIdTry(pessoa.getId());
        } catch (Exception e) {
            LOGGER.log(Level.SEVERE, e.toString(), e);
            return null;
        }
    }

    /**
     * Obtém todos os registros pessoaFuncao de uma pessoa     *
     * @param id Id da pessoa
     * @return Lista funcao pessoaFuncao da pessoa
     */
    public List<PessoaFuncao> findAllPessoaFuncaoByPessoaIdTry(int id) {

        //System.err.println(id);
        String qlString = "Select c from PessoaFuncao c Where c.pessoa.id = " + id;
        Query query;
        query = em.createQuery(qlString);

        return query.getResultList();
    }
...