P:autocomplete "bug" ou falha minha?

Qual o comportamento que vocês esperam de um autocomplete quando algum outro campo falha na conversão/validação dos dados??
Imagem que, neste componente autocomplete, eu já tenha escolhido a minha entidade…

Eu imagino que a resposta para isto seria: “uai… normal… continua com a entidade escolhida”, isto porque quando erra em algum campo erra na validação,
ele é colocado em evidencia, mas o seu valor não some. Assim, o usuário corrigi aquele campo e da o submit de novo. Correto?

Eisss o que está acontecendo comigo (ultima versao do prime, jsf e etc):

Uma view com 5 campos por exemplo…
Em uma delas preciso digitar um numero. (Aí cirie o meu converter proprio)…
E um dos campos é um autocomplete para selecionar um POJO qualquer… vamos imaginar que
a entidade que eu selecione seja:

value=1
label=Supermercado

Quando o cara tenta dar submit com um valor errado pro numero, algo do tipo “12a”, o form recarrega, mostrando a mensagem de erro “Digite um numero valido”,
e os campos continuam com o seus valores. O usuario corrigi o campo para "12"e dá submit de novo. O que acontece?
O autocomplete do primefaces perde o value antigo, e substitui pelo label… Ficando assim:

value=Supermercado
label=Supermercado

Adivinha o que acontece agora?

Caused by: java.lang.NumberFormatException: For input string: "Supermercado"

Erro no meu conversor da entidade, pois ele espera o “1” e recebeu “Supermercado”.
alguem ja viu isso?

Nunca tive isso.

Posta só o seu autocomplete aí.

Hebert, estava contando com sua colaboração :slight_smile:

Vou te mostrar o código do formulario inteiro…

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:p="http://primefaces.org/ui"
	xmlns:f="http://java.sun.com/jsf/core"
	template="/templates/template.xhtml">
	
	<ui:define name="content">
	                    <h:form id="mainForm">
                    <p:messages autoUpdate="true" id="msgs" showDetail="true" closable="true" showSummary="false" />
	

<p:panelGrid columns="2">  
    <f:facet name="header">  
	Conta
    </f:facet>  
      	
	  <p:outputLabel value="#{msg['entity.conta.data']}" for="data" />
	  <p:calendar id="data" locale="pt" navigator="true" value="#{contaController.entity.data}"
	  required="true" 	  requiredMessage="#{msg['global.validation.required']}"
	  pattern="dd-MM-yyyy"  converterMessage="#{msg['global.validation.date']}" />
	  
	  <p:outputLabel value="#{msg['entity.conta.valor']}" for="valor" />
	  <p:inputText id="valor" value="#{contaController.entity.valor}" required="true"
	  requiredMessage="#{msg['global.validation.required']}"
	  converter="numberConverter"
	  converterMessage="#{msg['global.validation.double']}"
	  />


	  	<p:outputLabel for="desc" value="#{msg['entity.descricao']}"/>
     	<p:inputText id="desc" value="#{contaController.entity.descricao}"/>
	  
		<p:outputLabel for="obs" value="#{msg['entity.observacao']}"/>
     	<p:inputTextarea id="obs" value="#{contaController.entity.observacao}" />
	  
	  
	  <p:outputLabel value="#{msg['entity.categoria']}" for="categoria"/>         
      <p:autoComplete value="#{contaController.entity.categoria}" id="categoria" required="true" requiredMessage="#{msg['global.validation.required']}" completeMethod="#{contaController.categoriaAutoComplete}"  
                      var="p" itemLabel="#{p}" itemValue="#{p.id}" converter="#{categoriaConverter}" forceSelection="true" minQueryLength="3"/>  
                        
                          
    <f:facet name="footer">  
       	    <p:commandButton icon="ui-icon-check" value="#{msg['button.save']}" ajax="false" 
             action="#{contaController.saveOrUpdate(false)}"/>
                                        
    	    <p:commandButton icon="ui-icon-check" value="#{msg['button.saveAndContinue']}" ajax="false" 
             action="#{contaController.saveOrUpdate(true)}"  />

    	    <p:commandButton icon="ui-icon-arrowthick-1-w" value="#{msg['button.back']}" ajax="false" 
             action="#{contaController.getIndexPath}"   />
                          
             
    </f:facet>  
	</p:panelGrid>
	
</h:form>

	</ui:define>
</ui:composition>

abraços e valeu pela ajuda até agora.
PS: vc tem no teu blog algum lugar que trata
validação no lado servidor com as anotacoes tipo @NotNull
por exemplo? (só aproveitando o gancho)

Tenho não, não mecho com essas anotações.

Foi mals, mas não consegui ver o que poderia ser o erro. Talvez outra pessoa ajude. [=

é, nós dois sabemos oque vai acontecer… ngm vai responder, até o tópico sair da lista dos recentes… e pronto. kkkk

Mas vou esperar aí…
não posso esperar muito.

O problema está evidente. É na hora que ele faz o post para validar… ai quando volta, os dados voltam corrimpidos.

Será que tem outra maneira de fazer validação? De forma rápida, prática e sem dor de cabeça? (estou sentindo o cheiro com JQuery).
Ja trabalhou ou tem alguma alternativa?

haha, relaxa. Vê se isso te ajuda: http://www.guj.com.br/java/261162-javalangnumberformatexception-for-input-string-
Olhei muito rápido então nem sei se vai servir-te.

valeuu pela ajuda…

cara infelizmente isso n tem nada a ver…
O problema não é a exception… O problema é que o primefaces nao mantem o value da entidade selecionada.
Ele troca o value para o label :frowning: perde… entende?

Post sua dúvida lá no forum do primefaces. [=

eu ja fiz isso… mas é foda pessoal lá não é tão rapido pra responder.
:frowning: