Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Duvida com autocomplete do PrimeFaces.

    <p:autoComplete
                                 id="inputLocalizarOrcamentoNome"
                                 styleClass="autocompletePanel"
                                 placeholder="Procurar por nome Cliente"
                                 icon="fa fa-search" cache="true"
                                 value="#{orcamentoGeralController.orcamentoGeral}" 
                                 completeMethod="#{orcamentoGeralController.autoCompleteCliente}" 
                                 var="og"
                                 itemLabel="#{og.id} #{og.cliente.perfil.perfilName}"
                                 itemValue="#{og}"
                                 converter="#{orcamentoGeralConverter}" >                         
                                   <p:ajax event="itemSelect" update="@all" 
                                   listener="#{orcamentoGeralController.searchPorIdOrcamento()}"/> 
                             </p:autoComplete>

Digitando o nome do cliente, quero listar todos os orcamentos(que chamo de orcamentoGeral) em nome desse cliente, e selecionar o objeto orcamentoGeral que eu quero editar pra popular a view OrcamentoGeral.xhtml com seus atributos.

Para tanto, preciso enviar para o metodo orcamentoGeralController.searchPorIdOrcamento() o id do orcamentoGeral, o mesmos exibido no itemLabel="#{og.id} ....

Nao sei como passar esse id pro controller, Achei que o itemValu faria isso, mas nao esta fazendo. Nao sei direito a funcao do itemValue.

Gostaria de uma ajuda pra entender exatamente a funcao do itemValue, e uma sugestao de como eu envio o #{og.id} pro controller

3 respostas

Não tenho certeza mas, tente para o itemValue a opção abaixo:

itemValue="#{og.id}"

Olá Gabriel,

O que eu entendia, é que o valor do ItemValue, seria atribuido a variavel que está no Value, seria mais ou menso como:

orcamentoGeralController.orcamentoGeral = og;

e no controller eu pegaria o id dessa forma:

orcamentoGeral.getId();

Não deu certo.

Tentei da forma que voce sugeriu:

value="#{orcamentoGeralController.orcamentoGeral.id}" 
 itemValue="#{og.id}"

Tentei dessa forma tambem:

value="#{orcamentoGeralController.id}" 
 itemValue="#{og.id}"

e criei um atributo id no Controller. Nenhuma deu certo.

private String id;
solução!

Consegui resolver o problema, o erro nao estava no componente , estava no converter:

Estava assim:

return og.toString();

Mudei para:

return og.getId().toString();

Nao entendi direito porque resolveu, pois o converter leva pra view, o id, e traz um objeto, de posse do objeto, eu deveria acessar o id.