Boa noite a todos, tenho a seguinte situação: tenho um cadastro de cotação onde o usuário pode clicar no botão [+] para adicionar um cliente. Esse botão abre um dialog onde ele faz uma pesquisa e os clientes são listados em uma dataTable para que ele possa selecionar o cliente que deseja adicionar na cotação. Quando clico em pesquisar sem informar os argumentos todos os clientes são pesquisados e listados, porém quando algum argumento é informado, as variáveis referentes aos argumentos em meu ManageBean não são populadas (todos os getts e sets foram criados corretamente), sendo assim a cláusua where do meu select não vai existir. Talvez seja algo relacionado aos forms, não sei ao certo até porque não consegui identificar mas o caso é que os argumentos não estão sendo setados!! Desde já agradeço pela ajuda e segue os códigos:
novaCotacao.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition 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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<ui:composition template="/paginas/principais/principal.xhtml">
<ui:define name="conteudo">
<!-- INÍCIO DO FORM DE COTAÇÃO -->
<h:form id="formCotacao">
<p:outputPanel id="painelNovaCotacao">
<p:messages id="menssagens"/>
<p:dialog id="dialogo" header="Aguarde..." modal="true" widgetVar="saveDialog" closable="false" height="100" width="60"
resizable="false" appendToBody="true">
<h:form>
<p:ajaxStatus style="width:16px;height:16px; position: center;">
<f:facet name="start">
<h:graphicImage value="/imagens/loading.gif" style="position: center;"/>
</f:facet>
</p:ajaxStatus>
</h:form>
</p:dialog>
<p:panel>
<p:fieldset legend="Cotação">
<h:panelGrid columns="3" cellpadding="2">
<h:outputLabel value="Cliente"/>
<h:outputLabel value=""/>
<h:outputLabel value="Data"/>
<p:inputText id="idCliente" value="#{cotacaoMB.cotacao.cliente.pessoa.nome}" readonly="true" />
<p:commandButton onclick="selecaoCliente.show()" type="button" image="ui-icon-plus" title="Icon Only"/>
<p:calendar id="idData" value="#{cotacaoMB.cotacao.dtCotacao}" navigator="true" pattern="dd/MM/yyyy" required="true" requiredMessage="Data é obrigatório!" showOn="button"/>
</h:panelGrid>
</p:fieldset>
<p:fieldset legend="Pedido 1">
<h:panelGrid columns="7" cellpadding="2">
<h:outputLabel value="Produto"/>
<h:outputLabel value="Valor"/>
<h:outputLabel value="Quantidade"/>
<h:outputLabel value="Frete"/>
<h:outputLabel value="Fornecedor"/>
<h:outputLabel value=""/>
<h:outputLabel value="Total"/>
<p:inputText id="idProduto" value="#{cotacaoMB.cotacao.produto1}" required="true" requiredMessage="Produto em Produto 1 é obrigatório!"/>
<p:inputMask id="idValor" value="#{cotacaoMB.cotacao.valorProduto1}" mask="999999990,?00" dir="RTL" required="true" requiredMessage="Valor do produto em Produto 1 é obrigatório!"/>
<p:inputMask id="idQuantidade" value="#{cotacaoMB.cotacao.quantidade1}" mask="999999990,?00" dir="LTR" required="true" requiredMessage=" Quantidade em Produto 1 é obrigatório!"/>
<p:inputMask id="idFrete" value="#{cotacaoMB.cotacao.valorFrete}" mask="[telefone removido],?00" dir="LTR" required="true" requiredMessage="Valor do frete em Produto 1 é obrigatório!"/>
<p:inputText id="idFornecedor" value="#{cotacaoMB.primeiroFornecedor}" readonly="true"/>
<p:commandButton onclick="selecaoFornecedor.show()" type="button" image="ui-icon-plus"/>
<p:inputMask id="idTotal" value="#{cotacaoMB.cotacao.totalPedido}" mask="999999990,?00" dir="LTR" readonly="true"/>
</h:panelGrid>
</p:fieldset>
<p:fieldset legend="Pedido 2">
<h:panelGrid columns="7" cellpadding="2">
<h:outputLabel value="Produto"/>
<h:outputLabel value="Valor"/>
<h:outputLabel value="Quantidade"/>
<h:outputLabel value="Frete"/>
<h:outputLabel value="Fornecedor"/>
<h:outputLabel value=""/>
<h:outputLabel value="Total"/>
<p:inputText id="idProduto2" value="#{cotacaoMB.cotacao.produto2}" />
<p:inputMask id="idValor2" value="#{cotacaoMB.cotacao.valorProduto2}" mask="999999990,?00" dir="RTL"/>
<p:inputMask id="idQuantidade2" value="#{cotacaoMB.cotacao.quantidade2}" mask="999999990,?00" dir="LTR"/>
<p:inputMask id="idFrete2" value="#{cotacaoMB.cotacao.valorFrete2}" mask="999999990,?00" dir="LTR"/>
<p:inputText id="idFornecedor2" value="#{cotacaoMB.segundoFornecedor}" readonly="true"/>
<p:commandButton onclick="selecaoFornecedor.show()" type="button" image="ui-icon-plus"/>
<p:inputMask id="idTotal2" value="#{cotacaoMB.cotacao.totalPedido2}" mask="999999990,?00" dir="RLT"/>
</h:panelGrid>
</p:fieldset>
<h:panelGrid columns="2" cellpadding="2">
<p:commandButton id="btGravar" value="Salvar" actionListener="#{cotacaoMB.gravar}" update="menssagens" onclick="saveDialog.show()" oncomplete="saveDialog.hide()" image="ui-icon ui-icon-disk"/>
<p:commandButton id="btNovo" value="Novo" actionListener="#{cotacaoMB.limparTudo}" immediate="true" update="mensagens" image="ui-icon ui-icon-refresh"/>
</h:panelGrid>
</p:panel>
</p:outputPanel>
</h:form><!-- /formNovaCotacao -->
<!-- FORM DIALOGS -->
<h:form>
<!-- DIALOG PARA SELEÇÃO DE CLIENTE -->
<p:dialog id="selecaoClienteDialog" header="Seleção de cliente" widgetVar="selecaoCliente" appendToBody="true"
height="550" width="1200" draggable="false" resizable="false" modal="true" styleClass="posicaoDialog">
<p:panel id="painelBuscarCliente" header="Buscar por" toggleable="true">
<p:dialog id="dialogo2" header="Aguarde..." modal="true" widgetVar="saveDialog" closable="false" height="100" width="60"
resizable="false" appendToBody="true">
<p:ajaxStatus style="width:16px;height:16px; position: center;">
<f:facet name="start">
<h:graphicImage value="/imagens/loading.gif" style="position: center;"/>
</f:facet>
</p:ajaxStatus>
</p:dialog>
<p:messages id="mensagensBusca"/>
<h:panelGrid columns="5" cellpadding="2">
<h:outputLabel value="Nome: "/>
<h:outputLabel value="CPF/CNPJ: "/>
<h:outputLabel value="Logradouro: "/>
<h:outputLabel value="Cidade: "/>
<h:outputLabel value=""/>
<p:inputText id="editPesNome" maxlength="50" size="35" value="#{cotacaoMB.nomeClienteArg}"/>
<p:inputText id="editPesCpfCnpj" maxlength="20" size="20" value="#{cotacaoMB.cpfCnpjClienteArg}" converterMessage="Informe somente números no campo CPF/CNPJ!"/>
<p:inputText id="editPesLogradouro" maxlength="50" size="35" value="#{cotacaoMB.logradouroClienteArg}" />
<p:inputText id="editPesCidade" maxlength="35" size="25" value="#{cotacaoMB.cidadeAClienteArg}"/>
<p:commandButton value="Pesquisar" image="ui-icon ui-icon-search" id="btPesquisarCli" actionListener="#{cotacaoMB.pesquisarCliente}" update="listarClientes, mensagensBusca"
onclick="saveDialog.show()" oncomplete="saveDialog.hide()"/>
</h:panelGrid>
</p:panel><!-- /painelBusca -->
<p:dataTable id="listarClientes" var="cliente" value="#{cotacaoMB.listaClientes}" paginator="true" rows="7" emptyMessage="Nenhum registro encontrado!">
<f:facet name="header">
Lista de clientes cadastrados
</f:facet>
<p:column headerText="Nome">
<h:outputText value="#{cliente.pessoa.nome}"/>
</p:column>
<p:column headerText="CPF/CNPJ">
<h:outputText value="#{cliente.pessoa.cpfCnpjFormatado}"/>
</p:column>
<p:column headerText="Logradouro">
<h:outputText value="#{cliente.pessoa.logradouro}"/>
</p:column>
<p:column headerText="Cidade">
<h:outputText value="#{cliente.pessoa.cidade}"/>
</p:column>
<p:column headerText="Selecione" style="width:32px">
<p:commandButton image="ui-icon ui-icon-pencil" onclick="selecaoCliente.hide()">
<f:setPropertyActionListener value="#{cliente}" target="#{cotacaoMB.cotacao.cliente}" />
</p:commandButton>
</p:column>
</p:dataTable><!-- /listaClientes -->
</p:dialog><!-- /DIALOG PARA SELEÇÃO DE CLIENTE -->
</h:form><!-- /FORM DIALOGS -->
</ui:define>
</ui:composition>
</html>
CotacaoMB.java
package br.com.gpa.controller;
import java.util.ArrayList;
@SessionScoped
@ManagedBean(name="cotacaoMB")
public class CotacaoMB {
private Cotacao cotacao;
private ClienteBO clienteBO;
private List<Cliente> listaClientes;
private List<Fornecedor> fornecedores;
private String primeiroFornecedor;
private String segundoFornecedor;
//argumentos de pesquisa do cliente
private String nomeClienteArg;
private Long cpfCnpjClienteArg;
private String logradouroClienteArg;
private String cidadeClienteArg;
public CotacaoMB(){
this.cotacao = new Cotacao();
this.clienteBO = new ClienteBO();
this.listaClientes = new ArrayList<Cliente>();
this.fornecedores = new ArrayList<Fornecedor>();
}
public void pesquisarCliente(){
Cliente cli = new Cliente();
cli.setPessoa(new Pessoa());
cli.getPessoa().setNome(getNomeClienteArg());
if(getCpfCnpjClienteArg() != null && getCpfCnpjClienteArg() != 0)
cli.getPessoa().setCpfCnpj(getCpfCnpjClienteArg());
else
setCpfCnpjClienteArg(null);
cli.getPessoa().setLogradouro(getLogradouroClienteArg());
cli.getPessoa().setCidade(getCidadeClienteArg());
this.setListaClientes(clienteBO.recuperaClientesPorParametros(cli));
if(listaClientes.isEmpty())
FacesContextUtil.mensagemAtencao("Nenhum registro encontrado para os dados informado!");
}
public void gravar(){
System.out.println();
}
public void limparTudo(){
System.out.println();
}
public void setPrimeiroFornecedor(String primeiroFornecedor) {
this.primeiroFornecedor = primeiroFornecedor;
}
public String getPrimeiroFornecedor(){
if(this.getFornecedores() != null && !this.getFornecedores().isEmpty())
return fornecedores.get(0).getPessoa().getNome();
else
return "";
}
public void setSegundoFornecedor(String segundoFornecedor) {
this.segundoFornecedor = segundoFornecedor;
}
public String getSegundoFornecedor(){
if(this.getFornecedores() != null && !this.getFornecedores().isEmpty())
return fornecedores.get(1).getPessoa().getNome();
else
return "";
}
public void setCotacao(Cotacao cotacao) {
this.cotacao = cotacao;
}
public Cotacao getCotacao() {
return cotacao;
}
public void setFornecedores(List<Fornecedor> fornecedores) {
this.fornecedores = fornecedores;
}
public List<Fornecedor> getFornecedores() {
return fornecedores;
}
/* public String getNomeCliente(){
if(this.getCliente() != null && this.getCliente().getPessoa() != null)
return this.getCliente().getPessoa().getNome();
else
return "";
}*/
public void setListaClientes(List<Cliente> listaClientes) {
this.listaClientes = listaClientes;
}
public List<Cliente> getListaClientes() {
return listaClientes;
}
public String getNomeClienteArg() {
return nomeClienteArg;
}
public void setNomeClienteArg(String nomeClienteArg) {
this.nomeClienteArg = nomeClienteArg;
}
public Long getCpfCnpjClienteArg() {
return cpfCnpjClienteArg;
}
public void setCpfCnpjClienteArg(Long cpfCnpjClienteArg) {
this.cpfCnpjClienteArg = cpfCnpjClienteArg;
}
public String getLogradouroClienteArg() {
return logradouroClienteArg;
}
public void setLogradouroClienteArg(String logradouroClienteArg) {
this.logradouroClienteArg = logradouroClienteArg;
}
public void setCidadeClienteArg(String cidadeClienteArg) {
this.cidadeClienteArg = cidadeClienteArg;
}
public String getCidadeClienteArg() {
return cidadeClienteArg;
}
}
[b]OBS.: linha dos argumentos da pesquisa (no xhtml): 101 a 103; linha do botão que aciona o método do manageBean: 104
Palavras chave: Arg, pesquisarCliente
[b]