Galera, nunca vi isto.
Imaginem só:
tenho uma view com dois campos:
um autocomplete de uma entidade qualquer
um inputtext com um converter de numero
Eis o meu converter para o número:
@FacesConverter(value="numberConverter")
public class NumberConverter implements Converter{
@Override
public Object getAsObject(FacesContext context, UIComponent component,
String value) {
if(value == null || value.isEmpty()){
throw new ConverterException("erro double vazio/nulo");
}
value = value.replaceAll(",", ".");
Double dValue = 0.0;
try{
dValue = Double.valueOf(value);
}catch(Exception e){
throw new ConverterException("erro double parse");
}
return dValue;
}
@Override
public String getAsString(FacesContext context, UIComponent component,
Object value) {
return value == null? "" : value.toString();
}
}
O que que acontece?..
Se eu digito um valor valido para o numero e escolho um item correto do autocomplete… BELEZA!
Se eu digito um valor ERRADO para o numero e escolho um item correto do autocomplete: mostra am sg de erro, pede pra corrigir e digitar um número. Até aí tudo bem. Mas quando arrumo o numero e clico no botão de novo… Da uma exception…
O meu outro converter não recebe o ID (value) do autocomplete selecionado… E sim o label!
Caused by: java.lang.NumberFormatException: For input string: "Supermercado"
alguem ja viu isso?