Bonjour,

J'ai une question toute bête.
La page d'accueil JSF 2 de mon site web est un .xhtml qui fait appel à un ManagedBean, qui débute ainsi :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
 * Contrôleur de la base web d'accueil.
 */
@Component("accueil")
@SessionScoped
public class AccueilController extends AbstractController
{
   /** Service d'installation. */
   @Autowired
   private InstallationService serviceInstallation;
 
   /** Code commune sélectionné par l'utilisateur. */
   private CodeCommune m_codeCommune;
 
   /** Code département sélectionné par l'utilisateur. */
   private CodeDepartement m_codeDepartement;
 
   /** Code région sélectionné par l'utilisateur. */
   private CodeRegion m_codeRegion;
Son web.xml contient ces directives-ci, pour faire la liaison Spring ↔ JSF 2 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
 
    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>
L'annotation @SessionScoped du ManagedBean est du monde JSF (javax.faces.bean.SessionScoped) et ne suffit pas à elle seule à lui donner la portée désirée.
Spring le considère toujours comme de portée singleton, et je dois changer ceci rapidement.

Faut-il que je place une directive en parallèle dans l'applicationContext.xml de mon application ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<bean id="accueil" class="fr.ardent.web.accueil.AccueilController" scope="session" />
Mais dans ce cas, qui comprend quoi ?
Spring ne va t-il pas produire une deuxième instance distincte du ManagedBean qui fera concurrence à celle que JSF 2 s'est produite pour lui ?
Dois-je au contraire dégager le @SessionScoped que j'ai placé sur le ManagedBean parce qu'il n'est plus interprété ?

Merci beaucoup !