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 
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
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.
