我有一个dataTable
ajax 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;
}
}