<h:inputText value="#{testBean.b}"><f:converter converterId="dc" /></h:inputText>
@SessionScoped
@ManagedBean
class TestBean{
private Double b;
//getter-setter
}
У меня есть требование хранить пустые значения как ноль и 0 как 0 в двойном типе данных
Я переопределил NumberConverter, чтобы он возвращал ноль, если строка (в текстовом поле) пуста или пуста
Код в части if выполняется и возвращает ноль, но метод set (testBean.setB) вызывается со значением 0.
public class DoubleFormatter extends NumberConverter {
@Override
public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String param){
if(param ==null || param.trim().length()==0){
System.out.println("returning null");
return null;
}
return super.getAsObject(facesContext, uiComponent, param);
}
@Override
public String getAsString(FacesContext facesContext, UIComponent uiComponent,Object obj) {
if(obj ==null)
return "";
return super.getAsString(facesContext, uiComponent, obj);
}
}
Параметр контекста javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
для меня бесполезен, так как я хочу применить его только к определенным полям.