Da poche ricerche, questo sembra un problema che è stato in giro per un po '. Ho scritto un FacesConverter che assomiglia al seguente. L'oggetto Categoria è un'entità JPA e CategoryControl è il DAO che lo preleva.CDI Injection in a FacesConverter
@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();
}
}
Come probabilmente avete indovinato ormai, non ho mai ottenere l'iniezione. Ho ottenuto questa soluzione da this page, che assomiglia a questo .:
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.
Tuttavia non posso fare questo lavoro sia. Il mio backing bean crea e restituisce un convertitore, ma non viene iniettato dall'oggetto.
Sto utilizzando MyFaces CODI 1.0.1. Con l'attuale contenitore GlassFish/Weld. Qualcuno può suggerire una soluzione prima di ricodificare per non utilizzare un convertitore?
Beh, sarò bloccato. Ho implementato una soluzione alternativa che fondamentalmente chiama l'applicazione per valutare un'espressione dall'interno del convertitore, ma penso che questo sia più elegante. Quindi ho un'altra domanda @BalusC - non è ora che hai scritto un libro su JSF? – AlanObject
Prego. Per quanto riguarda il libro, non sei di gran lunga il primo a chiederlo ... – BalusC
Beh, non è che tu debba scrivere molto, basta modificare tutte le cose che hai già scritto. Seriamente ho pensato ad uno schema per un libro se sei interessato a una collaborazione fammelo sapere. – AlanObject