После нескольких поисков это кажется проблемой, которая существует уже некоторое время.Я написал FacesConverter, который выглядит следующим образом.Объект Category - это объект JPA, а CategoryControl - это DAO, который его выбирает.
@FacesConverter(value = "categoryConverter")
public class CategoryConverter implements Converter {
@Inject private CategoryControl cc;
public CategoryConverter() { }
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (cc != null) return cc.getByName(value);
System.out.println("CategoryConverter().getAsObject(): no injection!");
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (!(value instanceof Category)) return null;
return ((Category) value).getName();
}
}
Как вы уже, наверное, догадались, я никогда не получу инъекцию.Я получил этот обходной путь от этой страницы , который выглядит следующим образом.: * 10101 *
Workaround for this problem: create this method in your localeController:
public Converter getConverter()
{
return FacesContext.getCurrentInstance().getApplication().createConverter("localeConverter");
}
and use converter="#{localeController.converter}" in your h:selectOneMenu.
Однако я тоже не могу сделать эту работу.Мой бэк-бин хорошо создает и возвращает конвертер, но не вводит в него объект.
Я использую MyFaces CODI 1.0.1.С текущим контейнером GlassFish / Weld.Может кто-нибудь предложить решение, прежде чем я перекодировать, чтобы не использовать конвертер?