Bonjour,

Je travaille actuellement sur un projet Spring+JSF. J'utilise des beans Spring comme managed beans JSF sans problème grâce à SpringBeanFacesELResolver mais impossible de faire pareil avec les converters (et à priori avec les validators mais je ne m'y suis pas encore attaqué)

J'ai essayé de plusieurs façons :

1ère façon : En incluant mon converter comme bean spring dans mon applicationContext.xml et en l'utilisant directement dans ma page JSF, comme je le fais pour les managed bean :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
<h:outputText value="Object" />
     <h:selectOneMenu id="selectObject" value="#{monManagedBean.object}">
	<f:selectItems value="#{monManagedBean.ObjectList}" />
	<f:converter converterId="#{monConverter}"/>
     </h:selectOneMenu>	
<h:message for="selectObject" />
J'obtiens l'erreur suivante au chargement du formulaire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
javax.faces.FacesException: Erreur dans lexpression: Object nommé util.jsf.converters.MonConverter@183eeb0 ne peut tre trouvé.
2ème façon : Je tente de déclarer le converter dans faces-config pour lui spécifier mon bean service Spring :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
        <converter>
		<converter-id>monConverter</converter-id>
		<converter-class>util.jsf.converters.MonConverter</converter-class>
		<property> 
	           <property-name>monServiceManager</property-name>
	           <value>#{monServiceManager}</value> 
	        </property>		
	</converter>
le formulaire se charge bien mais quand j'envoie les données, monServiceManager n'est pas instancié et le converter me renvoie donc une NullPointerException.

Après pas mal de recherche, le problème semble assez commun et je n'ai pas trouvé de solutions, hormis cette solution "maison" mais qui est hélas un peu ancienne et qui utilise des classes dépréciées.

Est-ce que quelqu'un ici a déjà réussi à faire cela ?

Je trouve quand même bizarre que ça fonctionne pour les managed bean et pas pour les converters. Il parait assez évident que si l'on utilise l'IoC pour les managed bean, on pourrait être amené à l'utiliser aussi pour les converters.

A moins que je sois passé à côté de quelque chose.

Merci d'avance pour votre aide.