2012-04-19 17 views
9

Ho bisogno di iniettare i bean Spring in un convertitore JSF (Primefaces). Ho provato a iniettare i fagioli usando il resolver EL. Tuttavia, i bean sono null all'interno dei convertitori.Come iniettare il bean Spring nel convertitore JSF

mio convertitore JSF:

public class DepartmentConverter implements Converter { 
    private DepartmentService departmentService; 
    //getter setter for this property 

    @Override 
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) { 
     //codes 
    } 

    @Override 
    public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) { 
     //Codes 
    } 
} 

faces-config.xml:

<converter> 
    <converter-id>DepartmentConverter</converter-id> 
    <converter-class>com.studinfo.jsf.converter.DepartmentConverter</converter-class> 
    <property> 
     <property-name>departmentService</property-name> 
     <property-class>com.studinfo.services.DepartmentService</property-class> 
     <default-value>#{DepartmentService}</default-value> 
    </property> 
</converter> 

EL resolver:

<application> 
    <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver> 
</application> 

Quando metto a punto il mio codice, la proprietà è departmentServicenull. Posso accedere allo stesso modo ai bean Spring all'interno di un bean JSF gestito.

risposta

20

Fino a JSF 2.3, i convertitori non sono target di iniezione. Effettua invece il convertitore come bean JSF o Spring. L'esempio che segue lo rende un JSF bean gestito:

@ManagedBean 
@RequestScoped 
public class DepartmentConverter implements Converter { 
    // ... 
} 

e usarlo come #{departmentConverter} invece di DepartmentConverter.

E.g.

<h:inputSome ... converter="#{departmentConverter}" /> 

o

<h:someComponent> 
    <f:converter binding="#{departmentConverter}" /> 
</h:someComponent> 

Non dimenticare di rimuovere il <converter> da faces-config.xml (che era a sua già necessario se si è utilizzato il @FacesConverter di annotazione, ma a parte).

Problemi correlati