Escribí un EnumConverter que se describe en Use enum in h:selectManyCheckbox? Todo estuvo bien hasta que reconocemos que este convertidor no funciona correctamente en la tabla de datos editable de Primeface. El problema es que aunque he añadido un atributo dentro de métodos getAsString y getAsObject como siguiente:EnumConverter en las tablas de datos editables de las primefas
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value instanceof Enum) {
component.getAttributes().put(ATTRIBUTE_ENUM_TYPE, value.getClass());
return ((Enum<?>) value).name();
} else {
throw new ConverterException(new FacesMessage("Value is not an enum: " + value.getClass()));
}
}
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Class<Enum> enumType = (Class<Enum>) component.getAttributes().get(ATTRIBUTE_ENUM_TYPE);
try {
return Enum.valueOf(enumType, value);
} catch (IllegalArgumentException e) {
throw new ConverterException(new FacesMessage("Value is not an enum of type: " + enumType));
}
}
En el último método (getAsObject
) no pudo encontrar el atributo que di a los componentes de atributos de mapa. Pero fuera de la base de datos editable pprimefaces todo está bien. ¿Hay alguna solución para lograr esto?
Gracias mucho! Trabajó para mi. – demdem