Olá,
estou passando trabalho com um converter no JSF.
Tenho uma tela de teste que uso para persistir um objeto de uma classe Carro, com atributos nome (String) e ano (Integer).
Fiz (copiei da net) um converter para o ano:
public class EmptyToNullConverter implements Converter {
public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
if (value == null || value.trim().length() == 0) {
if (component instanceof EditableValueHolder) {
((EditableValueHolder) component).setSubmittedValue(null);
}
return null;
}
return value;
}
public String getAsString(FacesContext facesContext, UIComponent component, Object value) {
return value == null ? null : value.toString();
}
}
O problema é o seguinte. Quando quero inserir um novo Carro, mostro meu formulário com 2 inputtext e instancio um objeto carro.
Este objeto é iniciado com ano=null.
Acontece que, na tela, o input text do ano aparece com o texto “0” zero, em vez de vir vazio.
Debuguei e vi que no método getAsString do converter, o parâmetro value já vem com o valor zero, em vez de nulo, como iniciado no objeto.
Antes que me perguntem, já coloquei a linha
-Dorg.apache.el.parser.COERCE_TO_ZERO=false
lá no meu tomcat.
Resolveu pro método getAsObject, mas o getAsString continua dando trabalho.
Em algum lugar que eu não faço idéia, o valor null do atributo ano do carro está sendo convertido pra zero.
Alguma dica?
Muito obrigado!