Napisałem EnumConverter, który jest opisany w Use enum in h:selectManyCheckbox? Wszystko było w porządku, dopóki nie rozpoznajemy, że ten konwerter nie działa poprawnie w pierwotnych edytowalnych datatable. Problemem jest to, że mimo, że dodaje się atrybut wewnątrz getAsString i getAsObject metodami jak następuje: mapaEnumConverter w pakietach głównych edytowalne datatable
@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));
}
}
W drugiej metodzie (getAsObject
) nie może znaleźć cechę, że dał składników atrybutów. Ale z edytowalnych datatable pprimefaces wszystko jest w porządku. Czy istnieje jakieś rozwiązanie, aby to osiągnąć?
Dzięki dużo! Pracował dla mnie. – demdem