Tenho um botão, que quando clico nele, ele acessa o método do bean 2 vezes, o que pode ser?
a pagina xhtml
o botao em questao eh o da linha 125
<?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:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:body>
<ui:composition template="./newTemplate.xhtml">
<ui:define name="top">
top
</ui:define>
<ui:define name="left">
<h:form id="formCliente">
<p:menu>
<p:submenu label="Cadastros">
<p:menuitem value="Cliente" url="/faces/cadastro_cliente.xhtml" icon="ui-icon ui-icon-disk"/>
<p:menuitem value="Fornecedor" url="/faces/cadastro_fornecedor.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Departamento" url="/faces/cadastro_departamento.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Funcionario" url="/faces/cadastro_funcionario.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Unidade de Medida" url="/faces/cadastro_unidade_medida.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Categoria" url="/faces/cadastro_categoria.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Marca" url="/faces/cadastro_marca.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Produto" url="/faces/cadastro_produto.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Banco" url="/faces/cadastro_banco.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
</p:submenu>
<p:submenu label="Consultas">
<p:menuitem value="Cliente" url="/faces/consulta_cliente.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Fornecedor" url="/faces/consulta_fornecedor.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Departamento" url="/faces/consulta_departamento.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Funcionario" url="/faces/consulta_funcionario.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Unidade Medida" url="/faces/consulta_unidade_medida.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Categoria" url="/faces/consulta_categoria.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Marca" url="/faces/consulta_marca.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Produto" url="/faces/consulta_produto.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Banco" url="/faces/consulta_banco.xhtml" icon="ui-icon ui-icon-arrowrefresh-1-w"/>
</p:submenu>
<p:submenu label="Venda">
<p:menuitem value="Pedido de Venda" url="/faces/realizar_pedidovenda.xhtml" icon="ui-icon ui-icon-star"/>
<p:menuitem value="TouchFaces" url="#{request.contextPath}/touch" icon="ui-icon ui-icon-star"/>
</p:submenu>
</p:menu>
</h:form>
</ui:define>
<ui:define name="content">
<h:form id="form">
<!-- Panel somente para deixar com um cara melhor nosso
cadastro-->
<p:panel header="Pedido de Venda">
<p:messages id="mensagens" showDetail="true" showSummary="true"/>
<h:panelGrid columns="2">
<h:outputLabel value="Cliente:" for="nomeCliente" />
<p:autoComplete binding="#{VendaBean.acCliente}" id="nomeCliente" value="#{VendaBean.selectedCliente}" completeMethod="#{VendaBean.completaNome}" size="50"
var="cliente" itemLabel="#{cliente.nome}" itemValue="#{cliente}" converter="ClienteConverter">
<p:ajax event="itemSelect" update="tbl1" listener="#{VendaBean.SelecaoCliente}"/>
</p:autoComplete>
</h:panelGrid>
<p/>
<p:dataTable value="#{VendaBean.listCliente}" id="tbl1" var="cliente"
emptyMessage="">
<p:column headerText="Nome: ">
<h:outputText value="#{cliente.nome}" />
</p:column>
<p:column headerText="CPF/CNPJ: ">
<h:outputText value="#{cliente.cpfCnpj}" />
</p:column>
<p:column headerText="End. para entrega: ">
<h:outputText value=" #{cliente.endereco}"/>
<h:outputText value=" #{cliente.complemento}"/>
<h:outputText value=" #{cliente.numero}"/>
<h:outputText value=" #{cliente.bairro}"/>
<h:outputText value=" #{cliente.cidade}"/>
<h:outputText value=" #{cliente.uf}"/>
<h:outputText value=" #{cliente.cep}"/>
</p:column>
<p:column style="width:100px">
<p:commandButton binding="#{VendaBean.alterarEndereco}" id="alterarEndereco" value="Alterar Endereço" update=":form:display" oncomplete="clienteDialog.show()">
<f:setPropertyActionListener value="#{cliente}" target="#{VendaBean.selectedCliente}"/>
<f:setPropertyActionListener value="#{true}" target="#{VendaBean.editMode}" />
</p:commandButton>
</p:column>
</p:dataTable>
<p/>
<p:commandButton binding="#{VendaBean.clBuscar}" id="clBuscar" value="Cliente vem buscar" update="tbl1" actionListener="#{VendaBean.ClienteBuscar}"
onclick="clienteDialog.hide()"/>
<p/>
<br/>
<p:panel>
<h:panelGrid columns="2">
<h:outputLabel value="Produto:" for="nomeProduto" />
<p:autoComplete binding="#{VendaBean.acProduto}" id="nomeProduto" value="#{VendaBean.selectedProduto}" completeMethod="#{VendaBean.completaProduto}" size="50"
var="produto" itemLabel="#{produto.nome}" itemValue="#{produto}" converter="ProdutoConverter">
<p:ajax event="itemSelect" update="tbl2" listener="#{VendaBean.SelecaoProduto}"/>
</p:autoComplete>
<h:outputLabel value="Quantidade:" for="qtd" />
<p:inputText binding="#{VendaBean.itQtd}" id="qtd" value="#{VendaBean.qtd}" size="4"/>
<p:commandButton binding="#{VendaBean.cbAdicionar}" id="cbAdicionar" value="Adicionar" update="tbl2" actionListener="#{VendaBean.adcionarItem}"/>
</h:panelGrid>
<p/>
<p:dataTable value="#{VendaBean.listProduto}" id="tbl2" var="produto"
emptyMessage="">
<p:column headerText="Nome: ">
<h:outputText value="#{produto.nome}" />
</p:column>
<p:column headerText="Marca: ">
<h:outputText value="#{produto.marca}" />
</p:column>
<p:column headerText="Categoria: ">
<h:outputText value=" #{produto.categoria}"/>
</p:column>
<p:column headerText="Quantidade: ">
<h:outputText value=" #{produto.qtd}"/>
</p:column>
<p:column headerText="Valor Unitário:">
<h:outputText value="R$#{produto.precoFormatado}"/>
</p:column>
<p:column headerText="Total: ">
<h:outputText value="R$#{produto.qtd * produto.custoUni}"/>
</p:column>
</p:dataTable>
</p:panel>
<p/>
<p:commandButton id="cbConfirmarPedido" binding="#{VendaBean.cbConfirmarPedido}" value="Confirmar Pedido" actionListener="#{VendaBean.confirmarPedido}" update="pagar nomeCliente clBuscar nomeProduto qtd cbAdicionar cbConfirmarPedido salvarOrcamento "/>
<p:commandButton id="salvarOrcamento" binding="#{VendaBean.salvarOrcamento}" value="Salvar Orçamento" update="tbl2" />
<p/>
<p:commandButton binding="#{VendaBean.pagar}" id="pagar" value="Pagar" disabled="true" action="#{VendaBean.RealizarPagamento}" ajax="false"/>
<!--Dialog para realizar update-->
<p:dialog header="Detalhes do Cliente" widgetVar="clienteDialog" resizable="false" id="clienteDlg"
showEffect="fade" hideEffect="explode" modal="true">
<h:panelGrid id="display" columns="2" cellpadding="4" style="margin:0 auto;">
<h:outputText value="Endereço:" />
<h:panelGroup>
<h:outputText value="#{VendaBean.selectedCliente.endereco}" style="font-weight:bold" rendered="#{!VendaBean.editMode}"/>
<p:inputText id="end" label="end" rendered="#{VendaBean.editMode}" value="#{VendaBean.selectedCliente.endereco}" maxlength="80" size="50" style="text-transform:uppercase" required="true" requiredMessage="Informe o Endereço"/>
</h:panelGroup>
<h:outputText value="Complemento:" />
<h:panelGroup>
<h:outputText value="#{VendaBean.selectedCliente.complemento}" style="font-weight:bold" rendered="#{!VendaBean.editMode}"/>
<p:inputText id="comple" label="comple" rendered="#{VendaBean.editMode}" value="#{VendaBean.selectedCliente.complemento}" maxlength="45" size="50" style="text-transform:uppercase" />
</h:panelGroup>
<h:outputText value="Número:" />
<h:panelGroup>
<h:outputText value="#{VendaBean.selectedCliente.numero}" style="font-weight:bold" rendered="#{!VendaBean.editMode}"/>
<p:inputText id="nro" label="nro" rendered="#{VendaBean.editMode}" value="#{VendaBean.selectedCliente.numero}" maxlength="10" size="40" style="text-transform:uppercase"/>
</h:panelGroup>
<h:outputText value="CEP:" />
<h:panelGroup>
<h:outputText value="#{VendaBean.selectedCliente.cep}" style="font-weight:bold" rendered="#{!VendaBean.editMode}"/>
<p:inputMask id="cep" label="cep" rendered="#{VendaBean.editMode}" value="#{VendaBean.selectedCliente.cep}" mask="99999-999" required="true" requiredMessage="Informe o Cep"/>
</h:panelGroup>
<h:outputText value="Bairro:" />
<h:panelGroup>
<h:outputText value="#{VendaBean.selectedCliente.bairro}" style="font-weight:bold" rendered="#{!VendaBean.editMode}"/>
<p:inputText id="bairro" label="bairro" rendered="#{VendaBean.editMode}" value="#{VendaBean.selectedCliente.bairro}" maxlength="30" size="50" style="text-transform:uppercase" />
</h:panelGroup>
<h:outputText value="Cidade:" />
<h:panelGroup>
<h:outputText value="#{VendaBean.selectedCliente.cidade}" style="font-weight:bold" rendered="#{!VendaBean.editMode}"/>
<p:inputText id="cidade" label="cidade" rendered="#{VendaBean.editMode}" value="#{VendaBean.selectedCliente.cidade}" maxlength="30" size="50" style="text-transform:uppercase" required="true" requiredMessage="Informe a Cidade"/>
</h:panelGroup>
<h:outputText value="Estado:" />
<h:panelGroup>
<h:outputText value="#{VendaBean.selectedCliente.uf}" style="font-weight:bold" rendered="#{!VendaBean.editMode}"/>
<p:inputText id="uf" label="uf" rendered="#{VendaBean.editMode}" value="#{VendaBean.selectedCliente.uf}" maxlength="2" size="2" style="text-transform:uppercase" required="true" requiredMessage="Informe o Estado"/>
</h:panelGroup>
<f:facet name="footer">
<p:outputPanel rendered="#{VendaBean.editMode}" layout="block" style="text-align:right">
<p:commandButton value="Salvar" update="tbl1" actionListener="#{VendaBean.alterarCliente}"
onclick="clienteDialog.hide()" image="ui-icon ui-icon-check"/>
<p:commandButton value="Cancelar" onclick="clienteDialog.hide()" image="ui-icon ui-icon-close"/>
</p:outputPanel>
</f:facet>
</h:panelGrid>
</p:dialog>
</p:panel>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
o bean:
package br.com.sacx.controls;
import br.com.sacx.daos.ClienteDAO;
import br.com.sacx.daos.ProdutoDAO;
import br.com.sacx.daos.VendaDAO;
import br.com.sacx.models.Cliente;
import br.com.sacx.models.Produto;
import br.com.sacx.models.Venda;
import java.io.IOException;
import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import org.primefaces.component.autocomplete.AutoComplete;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.event.SelectEvent;
public class VendaBean implements Serializable {
private Venda venda = new Venda();
private VendaDAO dao = new VendaDAO();
private ClienteDAO clienteDao = new ClienteDAO();
private Cliente selectedCliente = new Cliente();
private Cliente cliente = new Cliente();
private ArrayList<Cliente> listCliente = new ArrayList<Cliente>();
private ProdutoDAO produtoDao = new ProdutoDAO();
private Produto selectedProduto = new Produto();
private Produto produto = new Produto();
private ArrayList<Produto> listProduto = new ArrayList<Produto>();
private boolean editMode;
private int qtd;
private AutoComplete acCliente = new AutoComplete();
private CommandButton clBuscar = new CommandButton();
private AutoComplete acProduto = new AutoComplete();
private InputText itQtd = new InputText();
private CommandButton cbAdicionar = new CommandButton();
private CommandButton cbConfirmarPedido = new CommandButton();
private CommandButton salvarOrcamento = new CommandButton();
private CommandButton pagar = new CommandButton();
private CommandButton alterarEndereco = new CommandButton();
public VendaBean() {
}
public List<Cliente> completaNome(String query) throws SQLException {
ArrayList<Cliente> Clientes = clienteDao.getCliente();
List<Cliente> sugestoes = new ArrayList<Cliente>();
for (Cliente c : Clientes) {
if (c.getNome().startsWith(query.toUpperCase())) {
sugestoes.add(c);
}
}
return sugestoes;
}
public List<Produto> completaProduto(String query) throws SQLException {
ArrayList<Produto> listProduto = produtoDao.getProduto();
List<Produto> sugestoes = new ArrayList<Produto>();
for (Produto p : listProduto) {
if (p.getNome().startsWith(query.toUpperCase())) {
sugestoes.add(p);
}
}
return sugestoes;
}
public void SelecaoCliente(SelectEvent event) {
listCliente.clear();
Cliente cli = (Cliente) event.getObject();//pega o objeto selecionado no autocomplete
//
listCliente.add(cli);
selectedCliente = cli;
}
public void SelecaoProduto(SelectEvent event) {
//listProduto.clear();// limpa a lista
Produto p = (Produto) event.getObject();//pega o objeto selecionado no autocomplete
//ajustando os campos do endereço para mostrar na tabela
/* cli.setComplemento(" " + cli.getComplemento());
cli.setNumero(", " + cli.getNumero());
cli.setBairro(" - " + cli.getBairro());
cli.setCidade(" - " + cli.getCidade());
cli.setUf(" - " + cli.getUf() + " - ");*/
//add o objeto na lista
// listProduto.add(p);
selectedProduto = p;
}
public void alterarCliente() {
selectedCliente.setEndereco(getSelectedCliente().getEndereco().toUpperCase());
selectedCliente.setComplemento(getSelectedCliente().getComplemento().toUpperCase());
selectedCliente.setNumero(getSelectedCliente().getNumero().toUpperCase());
selectedCliente.setBairro(getSelectedCliente().getBairro().toUpperCase());
selectedCliente.setCidade(getSelectedCliente().getCidade().toUpperCase());
selectedCliente.setUf(getSelectedCliente().getUf().toUpperCase());
listCliente.clear();
listCliente.add(selectedCliente);
}
public void ClienteBuscar() {
if (selectedCliente.getEndereco().equals("CLIENTE VEM BUSCAR") || selectedCliente.getEndereco().equals("")) {
String mensagem = "Selecione um cliente";
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Aviso:", mensagem));
}
listCliente.get(0).setEndereco("CLIENTE VEM BUSCAR");
listCliente.get(0).setComplemento(new String());
listCliente.get(0).setNumero(new String());
listCliente.get(0).setBairro(new String());
listCliente.get(0).setCidade(new String());
listCliente.get(0).setUf(new String());
listCliente.get(0).setCep(new String());
/* listCliente.clear();
listCliente.add(selectedCliente);*/
}
public void adcionarItem(ActionEvent event) {
selectedProduto.setQtd(getQtd());
boolean verifica = false;
//verifica se o msm produto ja esta na lista, se estiver apenas soma a qtd e o valor
int codProduto = selectedProduto.getCodProduto();
int qtd = selectedProduto.getQtd();
BigDecimal total = selectedProduto.getCustoUni().multiply(BigDecimal.valueOf(qtd));
for (Produto p : listProduto) {
if (p.getCodProduto() == codProduto) {
p.setQtd(p.getQtd() + qtd);
p.setTotal(total);
verifica = true;
}
}
//se o produto nao estiver na lista (verifica = false) add ele
if (verifica == false) {
listProduto.add(getSelectedProduto());
}
}
public void confirmarPedido() {
getAcCliente().setDisabled(true);
getClBuscar().setDisabled(true);
getAcProduto().setDisabled(true);
getItQtd().setDisabled(true);
getCbAdicionar().setDisabled(true);
getCbConfirmarPedido().setDisabled(true);
getSalvarOrcamento().setDisabled(true);
getAlterarEndereco().setDisabled(true);
getPagar().setDisabled(false);
}
public void RealizarPagamento() {
System.out.println("endereco = " + listCliente.get(0).getEndereco());
getAcCliente().setDisabled(false);
getClBuscar().setDisabled(false);
getAcProduto().setDisabled(false);
getItQtd().setDisabled(false);
getCbAdicionar().setDisabled(false);
getCbConfirmarPedido().setDisabled(false);
getSalvarOrcamento().setDisabled(false);
getAlterarEndereco().setDisabled(false);
getPagar().setDisabled(true);
FacesContext context = FacesContext.getCurrentInstance();
try {
context.getExternalContext().redirect("faces/pagar_pedido.xhtml");
} catch (IOException ex) {
Logger.getLogger(VendaBean.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* @return the venda
*/
public Venda getVenda() {
return venda;
}
/**
* @param venda the venda to set
*/
public void setVenda(Venda venda) {
this.venda = venda;
}
/**
* @return the cliente
*/
public Cliente getCliente() {
return cliente;
}
/**
* @param cliente the cliente to set
*/
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
/**
* @return the listCliente
*/
public ArrayList<Cliente> getListCliente() {
return listCliente;
}
/**
* @param listCliente the listCliente to set
*/
public void setListCliente(ArrayList<Cliente> listCliente) {
this.listCliente = listCliente;
}
/**
* @return the editMode
*/
public boolean isEditMode() {
return editMode;
}
/**
* @param editMode the editMode to set
*/
public void setEditMode(boolean editMode) {
this.editMode = editMode;
}
/**
* @return the selectedCliente
*/
public Cliente getSelectedCliente() {
return selectedCliente;
}
/**
* @param selectedCliente the selectedCliente to set
*/
public void setSelectedCliente(Cliente selectedCliente) {
this.selectedCliente = selectedCliente;
}
/**
* @return the selectedProduto
*/
public Produto getSelectedProduto() {
return selectedProduto;
}
/**
* @param selectedProduto the selectedProduto to set
*/
public void setSelectedProduto(Produto selectedProduto) {
this.selectedProduto = selectedProduto;
}
/**
* @return the produto
*/
public Produto getProduto() {
return produto;
}
/**
* @param produto the produto to set
*/
public void setProduto(Produto produto) {
this.produto = produto;
}
/**
* @return the listProduto
*/
public ArrayList<Produto> getListProduto() {
return listProduto;
}
/**
* @param listProduto the listProduto to set
*/
public void setListProduto(ArrayList<Produto> listProduto) {
this.listProduto = listProduto;
}
/**
* @return the qtd
*/
public int getQtd() {
return qtd;
}
/**
* @param qtd the qtd to set
*/
public void setQtd(int qtd) {
this.qtd = qtd;
}
/**
* @return the acCliente
*/
public AutoComplete getAcCliente() {
return acCliente;
}
/**
* @param acCliente the acCliente to set
*/
public void setAcCliente(AutoComplete acCliente) {
this.acCliente = acCliente;
}
/**
* @return the acProduto
*/
public AutoComplete getAcProduto() {
return acProduto;
}
/**
* @param acProduto the acProduto to set
*/
public void setAcProduto(AutoComplete acProduto) {
this.acProduto = acProduto;
}
/**
* @return the itQtd
*/
public InputText getItQtd() {
return itQtd;
}
/**
* @param itQtd the itQtd to set
*/
public void setItQtd(InputText itQtd) {
this.itQtd = itQtd;
}
/**
* @return the cbAdicionar
*/
public CommandButton getCbAdicionar() {
return cbAdicionar;
}
/**
* @param cbAdicionar the cbAdicionar to set
*/
public void setCbAdicionar(CommandButton cbAdicionar) {
this.cbAdicionar = cbAdicionar;
}
/**
* @return the cbConfirmarPedido
*/
public CommandButton getCbConfirmarPedido() {
return cbConfirmarPedido;
}
/**
* @param cbConfirmarPedido the cbConfirmarPedido to set
*/
public void setCbConfirmarPedido(CommandButton cbConfirmarPedido) {
this.cbConfirmarPedido = cbConfirmarPedido;
}
/**
* @return the salvarOrcamento
*/
public CommandButton getSalvarOrcamento() {
return salvarOrcamento;
}
/**
* @param salvarOrcamento the salvarOrcamento to set
*/
public void setSalvarOrcamento(CommandButton salvarOrcamento) {
this.salvarOrcamento = salvarOrcamento;
}
/**
* @return the pagar
*/
public CommandButton getPagar() {
return pagar;
}
/**
* @param pagar the pagar to set
*/
public void setPagar(CommandButton pagar) {
this.pagar = pagar;
}
/**
* @return the clBuscar
*/
public CommandButton getClBuscar() {
return clBuscar;
}
/**
* @param clBuscar the clBuscar to set
*/
public void setClBuscar(CommandButton clBuscar) {
this.clBuscar = clBuscar;
}
/**
* @return the alterarEndereco
*/
public CommandButton getAlterarEndereco() {
return alterarEndereco;
}
/**
* @param alterarEndereco the alterarEndereco to set
*/
public void setAlterarEndereco(CommandButton alterarEndereco) {
this.alterarEndereco = alterarEndereco;
}
}