Внедрение CDI в FacesConverter

Судя по нескольким поискам, это похоже на проблему, которая существует уже некоторое время. Я написал FacesConverter, который выглядит следующим образом. Объект Категория является объектом 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();
}

}

Как вы уже, наверное, догадались, мне никогда не делали укол. Я нашел этот обходной путь на этой странице , который выглядит так: [

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.

] Однако я тоже не могу заставить это работать. Мой поддерживающий bean-компонент создает и возвращает преобразователь, но он не вводит в него объект.

Я использую MyFaces CODI 1.0.1. С текущим контейнером GlassFish / Weld. Может ли кто-нибудь предложить решение, прежде чем я перекодирую код, чтобы не использовать конвертер?

30
задан BalusC 23 September 2011 в 15:42
поделиться