0

我有一个dataTableajax event="rowSelect"。每次我点击另一行时,PostConstruct都会再次调用它,我不知道为什么。

所以,我的dataTable代码是:

<p:dataTable rowKey="#{itemTabela.id}" var="itemTabela"
    value="#{orcamentoMB.itensTabela}" paginator="true"
    emptyMessage="Não foi encontrado nenhum registro" rows="20"
    id="dataTableItensTabela"
    selection="#{orcamentoMB.itemOrcamento.itemTabelaProcedimento}"
    selectionMode="single" rowIndexVar="rowIndex"
    rowStyleClass="#{(rowIndex mod 2) eq 0 ? 'first-row' : 'second-row'}"
    paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}">

    <p:ajax event="rowSelect" update=":formFindItensTabela:commandButtonContinuar" />
    <p:ajax event="rowUnselect" update=":formFindItensTabela:commandButtonContinuar" />

    <p:column headerText="Nome" sortBy="#{itemTabela.procedimento.nome}"
        filterBy="#{itemTabela.procedimento.nome}" id="nome" filterMatchMode="contains">
        <h:outputText value="#{itemTabela.procedimento.nome}" />
    </p:column>

    <p:column headerText="Valor" sortBy="#{itemTabela.valor}" id="valor">
        <h:outputText value="#{itemTabela.valor}">
            <f:convertNumber currencySymbol="R$ " type="currency" />
        </h:outputText>
    </p:column>
</p:dataTable>

<p:panel>
    <p:commandButton value="Continuar" process="@this"
        id="commandButtonContinuar"
        disabled="#{orcamentoMB.itemOrcamento.itemTabelaProcedimento == null}"
        update=":formOpcoesItem" oncomplete="varDialogOpcoesItem.show()" />
</p:panel>

看,该selection属性将值保存在一个对象中,而我的 ajax 事件只是更新了commandButton,我不知道为什么postConstruct每次选择另一行时都会调用 。

下面的代码是我的 ManagedBean:

package br.com.odontonew.financeiro.mb;

import br.com.odontonew.bean.*;
import br.com.odontonew.exception.BOException;
import br.com.odontonew.financeiro.bean.*;
import br.com.odontonew.financeiro.bo.OrcamentoBOImpl;
import br.com.odontonew.helper.LovHelper;
import br.com.odontonew.helper.ParametroSistemaHelper;
import br.com.odontonew.mb.BasicMBImpl;
import br.com.odontonew.util.ViewMode;
import java.util.*;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import org.apache.log4j.Logger;
import org.primefaces.context.RequestContext;
import org.primefaces.event.SelectEvent;

@ManagedBean(name = "orcamentoMB")
@ViewScoped
public class OrcamentoMBImpl extends BasicMBImpl {

    private static Logger logger = Logger.getLogger(OrcamentoMBImpl.class);

    @ManagedProperty(value = "#{orcamentoBO}")
    private OrcamentoBOImpl orcamentoBO;

    @ManagedProperty(value = "#{parametroSistemaHelper}")
    private ParametroSistemaHelper parametroSistemaHelper;

    @ManagedProperty(value = "#{lovHelper}")
    private LovHelper lovHelper;

    private Orcamento orcamento;
    private HistoricoPagamentoOrcamento historicoPagamentoOrcamento;
    private List<Orcamento> orcamentos;
    private ItemOrcamento itemOrcamento;
    private TabelaProcedimento tabela;
    private ItemTabelaProcedimento itemTabelaProcedimento;
    private List<Dentista> dentistas;
    private SelectItem dentistasAsSelectItem[];
    private List<Paciente> pacientes;
    private SelectItem pacientesAsSelectItem[];
    private List<SituacaoOrcamento> situacoes;
    private SelectItem situacoesAsSelectItem[];
    private List<TabelaProcedimento> tabelas;
    private SelectItem tabelasAsSelectItem[];
    private List<BandeiraCartao> bandeiras;
    private List<FormaPagamento> formasPagamento;
    private List<ItemOrcamento> itens;
    private List<ItemTabelaProcedimento> itensTabela;

    @PostConstruct
    public void init() {
        logger.debug("Inicializando componentes no PostConstruct");
        dentistas = (List<Dentista>) orcamentoBO
                .findByNamedQuery("Dentista.findAllCompleto");
        pacientes = (List<Paciente>) orcamentoBO
                .findByNamedQuery("Paciente.findAllCompleto");
        situacoes = (List<SituacaoOrcamento>) orcamentoBO
                .findByNamedQuery("SituacaoOrcamento.findAll");
        tabelas = (List<TabelaProcedimento>) orcamentoBO
                .findByNamedQuery("TabelaProcedimento.findAllSimples");
        bandeiras = (List<BandeiraCartao>) orcamentoBO
                .findByNamedQuery("BandeiraCartao.findAll");
        formasPagamento = (List<FormaPagamento>) orcamentoBO
                .findByNamedQuery("FormaPagamento.findAll");
    }

    public void novo(ActionEvent event) {
        List<ParametroSistema> parametros = parametroSistemaHelper
                .getParametroByCodigo("DIAS_VALIDADE_ORCAMENTO");

        if (parametros != null) {
            ParametroSistema paramDiasValidadeContrato = (ParametroSistema) parametros
                    .get(0);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(new Date());
            calendar.add(Calendar.DATE, Integer
                    .valueOf(paramDiasValidadeContrato.getValor_campo1()
                            .toString()));

            itens = new ArrayList<ItemOrcamento>();
            orcamento = new Orcamento();
            orcamento.setDataEmissao(new Date());
            orcamento.setDataValidade(calendar.getTime());
            orcamento.setSituacao((SituacaoOrcamento) lovHelper.getLovByCodigo(
                    SituacaoOrcamento.class, "AGUARDANDO_ACEITACAO"));
        } else {
            addErrorMessage("Parâmetro DIAS_VALIDADE_CONTRATO faltando no Sistema");
            logger.error("Parâmetro DIAS_VALIDADE_CONTRATO faltando no Sistema");
        }
    }

    public void alterar(ActionEvent event) {
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("idOrcamento", orcamento.getId());
        itens = (List<ItemOrcamento>) orcamentoBO.findByNamedQuery(
                "ItemOrcamento.findAllCompletoWhereIdOrcamento", params);
    }

    public void salvar(ActionEvent event) {
        try {
            String situacaoAposSalvar = event.getComponent().getAttributes()
                    .get("situacaoAposSalvar").toString();

            orcamento.setSituacao((SituacaoOrcamento) lovHelper.getLovByCodigo(
                    SituacaoOrcamento.class, situacaoAposSalvar));

            ItemOrcamento item;
            Iterator<ItemOrcamento> iterator = itens.iterator();

            while (iterator.hasNext()) {
                item = (ItemOrcamento) iterator.next();
                orcamento.getItens().add(item);
            }

            if (orcamento.getId() == null) {
                orcamento = (Orcamento) orcamentoBO.save(orcamento);
                addInfoMessage("Orçamento salvo com sucesso");
            } else {
                orcamentoBO.update(orcamento);
                addInfoMessage("Orçamento atualizado com sucesso");
            }

            orcamentos = (List<Orcamento>) orcamentoBO
                    .findByNamedQuery("Orcamento.findAllCompleto");
        } catch (BOException e) {
            FacesContext.getCurrentInstance().validationFailed();
            addErrorMessage(e.getMessage());
        }
    }

    public void deletar() {
        try {
            orcamentoBO.delete(orcamento);
            addInfoMessage("Orçamento deletado com sucesso");
            orcamentos = (List<Orcamento>) orcamentoBO
                    .findByNamedQuery("Orcamento.findAllCompleto");
        } catch (BOException e) {
            addErrorMessage(e.getMessage());
        }
    }

    public List<Dente> getDentesByItemSelected() {

        List<Dente> dentes = new ArrayList<Dente>();

        if (itemTabelaProcedimento != null) {
            Iterator<Dente> it = itemTabelaProcedimento.getProcedimento()
                    .getDentes().iterator();

            while (it.hasNext()) {
                dentes.add(it.next());
            }
        }
        return dentes;
    }

    public List<LocalAplicacao> getLocaisAplicacaoByItemSelected() {
        List<LocalAplicacao> locais = new ArrayList<LocalAplicacao>();

        if (itemTabelaProcedimento != null) {
            Iterator<LocalAplicacao> it = itemTabelaProcedimento
                    .getProcedimento().getLocaisAplicacao().iterator();
            while (it.hasNext()) {
                locais.add(it.next());
            }
        }

        return locais;
    }

    public List<FaceAplicacao> getfacesAplicacaoByItemSelected() {
        List<FaceAplicacao> faces = new ArrayList<FaceAplicacao>();

        if (itemTabelaProcedimento != null) {
            Iterator<FaceAplicacao> it = itemTabelaProcedimento
                    .getProcedimento().getFacesAplicacao().iterator();
            while (it.hasNext()) {
                faces.add(it.next());
            }
        }

        return faces;
    }

    public void prepararAddItemOrcamento(ActionEvent event) {
        itemOrcamento = new ItemOrcamento();
        itemOrcamento.setSituacao((SituacaoItemOrcamento) lovHelper
                .getLovByCodigo(SituacaoItemOrcamento.class,
                        "AGUARDANDO_CONCLUSAO"));

        itemOrcamento.setOrcamento(orcamento);
    }

    public void addItemOrcamento(ActionEvent event) {
        double totalGeral = orcamento.getTotalGeral();
        totalGeral += itemOrcamento.getItemTabelaProcedimento().getValor();
        orcamento.setTotalGeral(totalGeral);
        itens.add(itemOrcamento);
    }

    public void delItemOrcamento(ActionEvent event) {
        double totalGeral = orcamento.getTotalGeral();
        totalGeral -= itemOrcamento.getItemTabelaProcedimento().getValor();
        orcamento.setTotalGeral(totalGeral);
        itens.remove(itemOrcamento);
    }

    public void carregarItensTabelaSelecionada() {

        Map<String, Object> params = new HashMap<String, Object>();
        params.put("idTabelaProcedimento", tabela.getId());
        itensTabela = (List<ItemTabelaProcedimento>) orcamentoBO
                .findByNamedQuery(
                        "ItemTabelaProcedimento.findAllCompletoByIdTabelaProcedimento",
                        params);
    }

    public double getMaxDesconto() {
        List<ParametroSistema> params = parametroSistemaHelper
                .getParametroByCodigo("MAXIMO_DESCONTO");
        ParametroSistema param = (ParametroSistema) params.get(0);
        return Double.valueOf(param.getValor_campo1().toString()).doubleValue();
    }

    public List<Orcamento> getOrcamentos() {
        try {
            if (orcamentos == null)
                orcamentos = (List<Orcamento>) orcamentoBO
                        .findByNamedQuery("Orcamento.findAllCompleto");
            return orcamentos;
        } catch (BOException e) {
            addErrorMessage(e.getMessage());
        }
        return null;
    }

    public void iniciarPagamento(ActionEvent event) {
        historicoPagamentoOrcamento = new HistoricoPagamentoOrcamento();
        historicoPagamentoOrcamento.setDataHora(new Date());
        historicoPagamentoOrcamento.setOrcamento(orcamento);
    }

    public void finalizarPagamento(ActionEvent event) {
        try {
            orcamentoBO.pagarOrcamento(historicoPagamentoOrcamento);
            addInfoMessage("Pagamento realizado com sucesso");
        } catch (BOException e) {
            FacesContext.getCurrentInstance().validationFailed();
            addErrorMessage(e.getMessage());
        }
    }

    public HistoricoPagamentoOrcamento getHistoricoPagamentoOrcamento() {
        return historicoPagamentoOrcamento;
    }

    public void setHistoricoPagamentoOrcamento(
            HistoricoPagamentoOrcamento historicoPagamentoOrcamento) {
        this.historicoPagamentoOrcamento = historicoPagamentoOrcamento;
    }

    public List<BandeiraCartao> getBandeiras() {
        return bandeiras;
    }

    public List<FormaPagamento> getFormasPagamento() {
        return formasPagamento;
    }

    public OrcamentoBOImpl getOrcamentoBO() {
        return orcamentoBO;
    }

    public void setOrcamentoBO(OrcamentoBOImpl orcamentoBO) {
        this.orcamentoBO = orcamentoBO;
    }

    public Orcamento getOrcamento() {
        return orcamento;
    }

    public void setOrcamento(Orcamento orcamento) {
        this.orcamento = orcamento;
    }

    public List<Dentista> getDentistas() {
        return dentistas;
    }

    public SelectItem[] getDentistasAsSelectItem() {
        return dentistasAsSelectItem;
    }

    public void setDentistasAsSelectItem(SelectItem dentistasAsSelectItem[]) {
        this.dentistasAsSelectItem = dentistasAsSelectItem;
    }

    public List<Paciente> getPacientes() {
        return pacientes;
    }

    public SelectItem[] getPacientesAsSelectItem() {
        return pacientesAsSelectItem;
    }

    public void setPacientesAsSelectItem(SelectItem pacientesAsSelectItem[]) {
        this.pacientesAsSelectItem = pacientesAsSelectItem;
    }

    public List<SituacaoOrcamento> getSituacoes() {
        return situacoes;
    }

    public SelectItem[] getSituacoesAsSelectItem() {
        if (situacoes.size() > 0) {
            situacoesAsSelectItem = new SelectItem[situacoes.size() + 1];
            situacoesAsSelectItem[0] = new SelectItem("", "Todos");
            for (int i = 0; i < situacoes.size(); i++)
                situacoesAsSelectItem[i + 1] = new SelectItem(
                        ((SituacaoOrcamento) situacoes.get(i)).getDescricao(),
                        ((SituacaoOrcamento) situacoes.get(i)).getDescricao());

            return situacoesAsSelectItem;
        } else {
            return new SelectItem[0];
        }
    }

    public void setSituacoesAsSelectItem(SelectItem situacoesAsSelectItem[]) {
        this.situacoesAsSelectItem = situacoesAsSelectItem;
    }

    public List<TabelaProcedimento> getTabelas() {
        return tabelas;
    }

    public SelectItem[] getTabelasAsSelectItem() {
        return tabelasAsSelectItem;
    }

    public void setTabelasAsSelectItem(SelectItem tabelasAsSelectItem[]) {
        this.tabelasAsSelectItem = tabelasAsSelectItem;
    }

    public List<ItemOrcamento> getItens() {
        return itens;
    }

    public void setItens(List<ItemOrcamento> itens) {
        this.itens = itens;
    }

    public List<ItemTabelaProcedimento> getItensTabela() {
        return itensTabela;
    }

    public ParametroSistemaHelper getParametroSistemaHelper() {
        return parametroSistemaHelper;
    }

    public void setParametroSistemaHelper(
            ParametroSistemaHelper parametroSistemaHelper) {
        this.parametroSistemaHelper = parametroSistemaHelper;
    }

    public LovHelper getLovHelper() {
        return lovHelper;
    }

    public void setLovHelper(LovHelper lovHelper) {
        this.lovHelper = lovHelper;
    }

    public ItemOrcamento getItemOrcamento() {
        return itemOrcamento;
    }

    public void setItemOrcamento(ItemOrcamento itemOrcamento) {
        this.itemOrcamento = itemOrcamento;
    }

    public TabelaProcedimento getTabela() {
        return tabela;
    }

    public void setTabela(TabelaProcedimento tabela) {
        this.tabela = tabela;
    }

}
4

0 回答 0