IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Developpement Web
        Comment créer un contexte Spring dans une application Web?
        Comment utiliser Spring avec JSF ?
        Comment maintenir une session Hibernate afin de pouvoir parcourir des objets dans une vue ?

rechercher
precedent    sommaire    suivant    telechargermiroir


Comment créer un contexte Spring dans une application Web?
auteur : Gildas Cuisinier
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 fourni un Listener afin de gérer cela :

<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>
Par défaut, ce Listener va charger un fichier /WEB-INF/applicationContext.xml, et stocker l'ApplicationContext dans le ServletContext.
Il est possible de spécifier un ou plusieurs fichiers à charger à la place du fichier par defaut. Pour cela, il faut utiliser un paramètre de contexte :

<context-param>
    <param-name>contextConfigLocation</param-name>
        <!-- Chargement de tout fihcier xml commençant par applicationContext -->
    <param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>
Ensuite, dans les servlets ( ou toute autre classe possèdant une référence au ServletContext ), il est possible de récupérer l'applicationContext via :

WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
lien : Documentation officielle sur l'intégration de Spring dans les applications Web

Comment utiliser Spring avec JSF ?
auteurs : Gildas Cuisinier, djo.mos
Une fois qu'un context Spring a été crée 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 :

faces-config>
  <application>
    <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
    </application>
</faces-config>
Une fois cela fait, il est possible de lier un Bean Spring comme une propriété du Bean JSF :

<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>
Dans cet exemple, #{userService} fait référence à un Bean défini dans Spring, avec le nom userService.

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 :

<application> 
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver 
  </el-resolver> 
</application>
Le reste fonctionne exactement de la même façon qu'avec le DelegatingVariableResolver.


Comment maintenir une session Hibernate afin de pouvoir parcourir des objets dans une vue ?
auteur : Michael Courcy
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 autre ). 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 :

<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>
lien : en Javadoc OpenSessionInViewFilter

rechercher
precedent    sommaire    suivant    telechargermiroir

Consultez les autres F.A.Q's


Valid XHTML 1.1!Valid CSS!

Les 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 © 2004 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni 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.