IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Utilisation spring avec jsf


Sujet :

JSF Java

  1. #1
    Membre actif Avatar de rushtakn
    Inscrit en
    Mai 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 213
    Points : 240
    Points
    240
    Par défaut Utilisation spring avec jsf
    Salut,

    J'ai intégré spring et jsf comme indiqué dans la faq.

    Dans le web.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <listener>
    	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
     
    <context-param>
    	<param-name>contextConfigLocation</param-name>
    	<param-value>/WEB-INF/applicationContext*.xml</param-value>
    </context-param>
    Dans faces-config.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <application>
    	<variable-resolver>
    		org.springframework.web.jsf.DelegatingVariableResolver
    	</variable-resolver>
    </application>
    Puis dans mon managed-bean :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <managed-property>
    	<property-name>tutu</property-name>
    	<value>#{tutuManager}</value>
    </managed-property>
    Seulement au demarrage du serveur j'ai l'exception suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    org.apache.jasper.JasperException: javax.servlet.jsp.JspException: javax.faces.FacesException: javax.faces.el.EvaluationException: Erreur dans l'expression: Object nommé 'tutuManager' ne peut 'tre trouvé.
    ...
    Or quand j'essaye de recuperer mon bean manuellement le code suivant fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ApplicationContext ctx = FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance());
    ctx.getBean("tutuManager");
    Des idées ?

    J'utilise jsf 1.1, tomcat 5.5, spring 1.2

  2. #2
    Membre actif Avatar de rushtakn
    Inscrit en
    Mai 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 213
    Points : 240
    Points
    240
    Par défaut
    toujours coincé, personne ne voit?

  3. #3
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    tu ll'a bien déclaré dans l'application context?

  4. #4
    Membre actif Avatar de rushtakn
    Inscrit en
    Mai 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 213
    Points : 240
    Points
    240
    Par défaut
    Si tu parles de mon tutuManager, j'ai bien dans mon application-context:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <bean id="tutuManager" parent="transactionProxy">
    	<property name="target">
    		<ref bean="tutuManagerTarget"/>
    	</property>
    </bean>
     
    <bean id="tutuManagerTarget" class="package.TutuManagerImpl">
    	<property name="tutuDAO">
    		<ref bean="tutuDAO"/>
    	</property>
    </bean>
    Mais de toute manière, s'il n'était pas correctement déclaré le code suivant ne fonctionnerait pas non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ApplicationContext ctx = FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance());
    ctx.getBean("tutuManager");

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    le code de ta jsp qui génère l'exception?

  6. #6
    Membre actif Avatar de rushtakn
    Inscrit en
    Mai 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 213
    Points : 240
    Points
    240
    Par défaut
    ça plante dans ma JSP à chaque fois que j'essaye d'accéder à une propriété de mon managed-bean depuis mon formulaire, donc dès qu'il y a du code du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h:form id="form_tutu" enctype="multipart/form-data">
             <h:inputTextarea rows="4" cols="23" id="nom" value="#{tutuBean.nom}"/>
    </h:form>
    Dans faces-config le bean est déclaré de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <managed-bean>
    	<managed-bean-name>tutuBean</managed-bean-name>
    	<managed-bean-class>package.TutuBean</managed-bean-class>
    	<managed-bean-scope>request</managed-bean-scope>
    	<managed-property>
    		<property-name>tutuManager</property-name>
    		<value>#{tutuManager}</value>
    	</managed-property>
    </managed-bean>

  7. #7
    Membre actif Avatar de rushtakn
    Inscrit en
    Mai 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 213
    Points : 240
    Points
    240
    Par défaut
    Bon, finalement après quelque recherches sur le sujet, il semblerait qu'en fonction de la version de JSF utilisée ça plante ou pas.
    Je suis donc passé de la 1.1_01 à la 1.1_02, j'ai croisé les doigts et ça fonctionne !

    'fin bon, le bug mystique quoi ~~

    http://forum.springsource.org/archiv...p/t-29039.html
    http://jira.springframework.org/browse/SPR-2574

  8. #8
    Membre actif Avatar de rushtakn
    Inscrit en
    Mai 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 213
    Points : 240
    Points
    240
    Par défaut
    Yo,

    Je réouvre le topic pour ne pas en créer un autre.
    L'ioc spring dans dans les managed property de mes beans JSF fonctionne.

    Je me retrouve dans la situation ou je souhaite réaliser un certain nombre d'opérations à l'instanciation de mon bean (dans le constructeur donc).
    Seulement il semblerait que l'ioc de Spring se fasse après l'appel au constructeur, ce qui provoque des NullPointerException.

    La première solution qui fonctionne est de créer programmatiquement les beans par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ApplicationContext ctx = FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance());
    	tutuManager = (TutuManager) ctx.getBean("tutuManager");
    Seulement les déclarer en tant que managed property n'a alors plus aucun intéret, et je trouve cette solution moins élégante.

    Y a t-il un moyen de faire autrement, en forçant spring à initialiser les beans quand je le souhaite? ou en effectuant les traitements ailleurs que dans le constructeur mais avant le rendu de la page?

  9. #9
    Membre actif Avatar de rushtakn
    Inscrit en
    Mai 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 213
    Points : 240
    Points
    240
    Par défaut
    pas d'autre solution?

  10. #10
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    tu peux aussi le faire avec JSF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    TutuManager tutu= (TutuManager ) context.getApplication().getExpressionFactory().createValueExpression(context.getELContext(),
    				"#{tutuBean.tutuManager }", TutuManager.class).getValue(context.getELContext());

Discussions similaires

  1. [Framework] Spring avec JSF et Hibernate
    Par wajdopovitch dans le forum Spring
    Réponses: 0
    Dernier message: 11/12/2009, 12h49
  2. Implémentation Spring Avec JSF-Hibernate
    Par wajdopovitch dans le forum Spring
    Réponses: 2
    Dernier message: 04/04/2009, 21h40
  3. Utiliser RichFaces avec JSF 1.2
    Par Dimitri_87 dans le forum JSF
    Réponses: 3
    Dernier message: 02/04/2008, 17h07
  4. utiliser JasperReports avec JSF
    Par Javix dans le forum JSF
    Réponses: 15
    Dernier message: 30/11/2007, 22h20
  5. Utiliser Spring avec EJB
    Par rOmAle dans le forum Spring
    Réponses: 5
    Dernier message: 03/04/2007, 17h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo