Bonjour à tous et merci d'avance,

Je travaille actuellement sur un mini-projet afin de me familiariser avec la technologie JSF1.2. Le projet consiste à créer un CRUD pour un annuaire simple (3 tables Personne/Equipe/Société).

Tout d'abord j'utilise donc JSF1.2, facelets, richfaces3.3.0GA, ainsi que Spring et Hibernate.

Maintenant le code:

Je travaille sur une dataTable affichant une liste de personne en fournissant quelques infos directement dans la table. Le code qui suis correspond à un composant qui affiche donc la liste des personnes, et qui ouvre un menu contextuel quand on clique pour afficher une fiche détaillé/modifier/supprimer.

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:rich="http://richfaces.org/rich">
	<h:form>
		<!-- dataTable pour affichage de la liste des personnes -->
		<rich:dataTable id="listePersonne" rows="15" value="#{liste}"
			var="personne" width="300px" columnClasses="center"
			reRender="sc1,sc2">
			<!-- Entête du tableau -->
			<f:facet name="header">
				<h:panelGroup>
					<h:outputText value="Liste des personnes" />
					<rich:datascroller reRender="sc2" id="sc1" pageIndexVar="pageIndex"
						pagesVar="pages" />
				</h:panelGroup>
			</f:facet>
<!-- première colonne: Nom des Personnes -->
			<rich:column sortBy="#{personne.nom}">
				<f:facet name="header">
					<h:outputText value="Nom" />
				</f:facet>
				<h:outputText value="#{personne.nom}" />
			</rich:column>
 
<!-- Suivi d autres données style prénom/nom d équipe/nom de l entreprise -->
 
<!-- Pied du tableau incluant un scroller-->
			<f:facet name="footer">
				<rich:datascroller reRender="sc1" pageIndexVar="pageIndex"
					pagesVar="pages" id="sc2" />
			</f:facet>
<!-- Controleur pour menu Contextuel -->
			<rich:componentControl event="onRowClick" for="menu" operation="show">
				<f:param value="#{personne.nom}" name="nom" />
				<f:param value="#{personne.idPersonne}" name="id" />
			</rich:componentControl>
		</rich:dataTable>
 
<!-- le menu contextuel -->
		<rich:contextMenu attached="false" id="menu" >
			<f:facet name="header">
				<h:outputText value="{nom}" />
			</f:facet>
			<rich:menuItem action="fiche" ajaxSingle="true">
				<a4j:actionparam name="personne_id" assignTo="#{AffichageBean.tbPersonneId}"
		value="{id}" />
				<h:outputText value="fiche" />
			</rich:menuItem>
			<rich:menuItem action="modifier">
					<h:outputText value="modifier" />
			</rich:menuItem>
			<rich:menuItem action="supprimer">
			<h:outputText value="supprimer" />
			</rich:menuItem>
		</rich:contextMenu>
	</h:form>
</ui:composition>
Pour information: toute la partie DataTable fonctionne très bien, la liste s'affiche, les tris fonctionne bien, les scrollers aussi. Seule la première option du menu contextuel est active pour le moment, les autres sont là en prévision.
Dans le menu contextuel, la "fiche" renvoi vers une autre page donnant plus de détails sur la personne. (fiche détaillée)

Voilà mon problème est le suivant:
Lorsque je vais cliquer la première fois sur la table et demander à voir une fiche, je suis bien envoyer vers la page, et la fiche apparait normalement.
Mais si je demande à voir une autre fiche, j'ai toujours les informations de ma première fiche qui apparait.

J'ai donc chercher la cause et je me suis aperçu que cette partie de code (situé dans le menu contextuel)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
<a4j:actionparam name="personne_id" 
assignTo="#{AffichageBean.tbPersonneId}" value="{id}" />
ne s'exécute que la première fois. (j'ai fait un simple print pour voir la valeur actuelle, et il ne s'affiche qu'une seule fois). En gros le setTBPersonneId n'est exécuter qu'une seule et unique fois. J'ai beau naviguer sur différentes pages, revenir sur la liste et sélectionner une autre personne, je reviens toujours sur la première ouverte.

Pour info: le bean affichageBean est en scope "Session", il me sers à garder des variables autre entre différentes pages.

Voilà, est ce que quelqu'un a une idée pour savoir d'où vient le problème?
Si vous voulez d'autres parties de code, ne pas hésiter.

Merci d'avance.