FAQ SpringConsultez toutes les FAQ
Nombre d'auteurs : 5, nombre de questions : 41, dernière mise à jour : 24 avril 2008 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs.
Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.
Dans une application Web, il n'est pas utile de créer l'ApplicationContext à la main via une des implémentations de cette interface.
En effet, Spring fournit un Listener afin de gérer cela :
Code xml : | Sélectionner tout |
1 2 3 4 5 | <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> |
Il est possible de spécifier un ou plusieurs fichiers à charger à la place du fichier par défaut. Pour cela, il faut utiliser un paramètre de contexte :
Code xml : | Sélectionner tout |
1 2 3 4 5 | <context-param> <param-name>contextConfigLocation</param-name> <!-- Chargement de tout fichier xml commençant par applicationContext --> <param-value>/WEB-INF/applicationContext*.xml</param-value> </context-param> |
Code java : | Sélectionner tout |
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
Une fois qu'un context Spring a été créé dans l'application Web, il est possible d'injecter un Bean Spring dans une Bean JSF. Pour ce faire, il faut tout d'abord ajouter un variable-resolver dans le faces-config.xml :
Code xml : | Sélectionner tout |
1 2 3 4 5 | faces-config> <application> <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver> </application> </faces-config> |
Code xml : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | <managed-bean> <managed-bean-name>monBeanJSF</managed-bean-name> <managed-bean-class>com.developpez.spring.jsf.MonBeanJSF</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> <managed-property> <property-name>userService</property-name> <value>#{userService}</value> </managed-property> </managed-bean> |
Méthode Spring 2.5 Spring 2.5 offre enfin une nouvelle méthode d'intégration avec JSF compatible avec la version 1.2 (qui ne repose pas sur le VariableResolver, déprécié depuis JSF 1.2).
Pour cela, il faut ajouter dans faces-config ce fragment xml :
Code java : | Sélectionner tout |
1 2 3 4 | <application> <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver </el-resolver> </application> |
Lors de l'utilisation d'Hibernate dans une application Web, il est courant d'avoir des problèmes lors de l'utilisation des objets Hibernate dans une vue (JSP, Velocity ou autres). La cause de cela est la stratégie par défaut de Hibernate, qui ne charge pas toutes les relations d'une entité automatiquement, mais seulement lorsqu'on tente réellement de les utiliser.
Le problème est qu'il est nécessaire d'avoir une Session hibernate ouverte, et qu'habituellement, celle-ci est fermée dans la couche service.
Pour résoudre le problème, si la SessionFactory est configurée dans un fichier de contexte Spring, un filtre est à notre disposition pour garder la session ouverte : OpenSessionInViewFilter.
Il suffit donc de l'ajouter dans le fichier web.xml :
Code xml : | Sélectionner tout |
1 2 3 4 5 6 7 8 | <filter> <filter-name>Hibernate Session In View Filter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>Hibernate Session In View Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.