Je me permets de relancer la discussion au cas où ! Car bien que j'ai pu avancer sur d'autres composantes, je reste bloquer... Merci de votre compréhension

Bonjour,
Je suis face à un probleme en JSF, j'utilise JSF 1.1 et Ajax4jsf sur un serveur Tomcat 6 (sans Richfaces : consignes m'ont été données de ne pas l'utiliser afin de ne pas allourdir l'application)
J'arrive à faire fonctionner différents elements AJAX4JSF (selectOneMenu, ...)
mais je n'arrive pas à faire un raffraichissement (sans rechargement de la page d'où utilisation d'Ajax4JSF)... d'un t:dataTable (tomw

En utilisant un bouton h:commandButton, mes données sont bien enregistrés et mis à jour...
Et avec a4j:commandButton, je n'y arrive pas... J'ai pourtant essayer plein de possibilités (mais je dois être un peu boulet) : <a4j:region>, <a4j:outputpanel> :
dois-je encapsuler des forms ??? dois-je impérativement utiliser RichFaces ???... En tenant de tracer le cycle de vie de mes évenements, en appuyant sur le a4j:commandButton, je m'aperçois que je ne rentre pas dans la méthode

Je suis un peu perdu... donc si vous avez des pistes (en observant mon code ci-dessous) vous me seriez d'une grande aide...

JSF
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="c"%>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %>
<%@taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j"%>
 
<c:subview id="editEmployeeView">
	   <meta content="no-cache" http-equiv="Cache-Control" />
       <meta content="no-cache" http-equiv="Pragma" />
 
 
	<h:form id="editEmployeeForm" >   
 
		<t:inputHidden forceId="true" id="employeeId" value="#{employeesController.displayedEmployee.id}"></t:inputHidden>
		<a4j:keepAlive beanName="employeesController" />
 
			<h:messages  showDetail="true" />
 
		<t:panelTabbedPane bgcolor="#FFFFCC"  id="tabEmployee" width="500" >
 
			<t:panelTab id="tabSkills" label="#{msg.employee_skills}" >
				<h:panelGrid width="350" columns="2">
 
					<h:outputLabel for="skl_lst_domain" value="#{msg.experience_domain}" />
					<t:selectOneMenu id="skl_lst_domain" value="#{employeesController.domainSelectedItem}" >
								<c:selectItems value="#{employeesController.itemsDomains}"  />   
								<a4j:support  event="onchange" reRender="skl_lst_skill"  action="#{employeesController.refreshItemsSkills}" ></a4j:support>
 
					</t:selectOneMenu>  
 
 
					<h:outputLabel for="skl_lst_skill"  value="#{msg.experience_skill}" />
					<t:selectOneMenu id="skl_lst_skill" value="#{employeesController.skillSelectedItem}" >  
							<c:selectItems value="#{employeesController.itemsSkills}"  /> 
					</t:selectOneMenu>  
 
 
					<h:outputLabel for="skl_lst_experience" value="#{msg.experience_level}" />
					<t:selectOneMenu id="skl_lst_experience" value="#{employeesController.experienceSelectedItem}" >  
						<c:selectItems value="#{employeesController.itemsExperiences}"  />   
					</t:selectOneMenu>  
 
 
					<h:outputLabel for="skl_txt_precision" value="#{msg.experience_precision}" />
					<h:inputText id="skl_txt_precision" value="" />
 
 
					<a4j:commandButton id="btt_editSkillEmployee" action="#{employeesController.createEmployeeSkillAction}" value="#{msg.employee_action_update}" reRender="a4jskill"   /> 
 
 
					</h:panelGrid>
					<a4j:outputPanel id="a4jskill" >
					<h:panelGrid>
						<t:dataTable id="gridSkill" border="1" cellspacing="0" cellpadding="0" value="#{employeesController.employeeSkills}" var="itemEmployeeSkill" sortable="true" rowClasses="tableRow1,tableRow2" rowOnMouseOver="">
							<h:column>
								<c:facet name="header">
									<h:outputText value="#{msg.experience_domain}" />
								</c:facet>
								<h:outputText value="#{itemEmployeeSkill.skill.domain.domainLabel}" />
							</h:column>
							<h:column>
								<c:facet name="header">
									<h:outputText value="#{msg.experience_skill}" />
								</c:facet>
								<h:outputText value="#{itemEmployeeSkill.skill.skillLabel}" />
							</h:column>
							<h:column>
								<c:facet name="header">
									<h:outputText value="#{msg.experience_level}"  />
								</c:facet>
								<h:outputText value="#{itemEmployeeSkill.experience.label}" />
							</h:column>
							<h:column>
							<c:facet name="header">
								<h:outputText value="" />
							</c:facet>
 
								<h:commandLink action="#{employeesController.deleteEmployeeSkillAction}">
								<c:param value="#{itemEmployeeSkill.id}" name="employeeSkillId" />
								<h:graphicImage style="border: 0" id="image1" value="/web/images/delete.png" width="15" height="15" />
							</h:commandLink>	
 
							<c:verbatim>&nbsp;</c:verbatim>
							</h:column>
 
						</t:dataTable>
					</h:panelGrid>
					</a4j:outputPanel>
			</t:panelTab>			
		</t:panelTabbedPane>
	</h:form>
</c:subview>

Managed Bean (employeesContorller)
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
/** Methode chargee de creer une competence employe     
                 *  * @return Cle de navigation (outcome) definissant le prochain ecran  (view) 
                 * a afficher en fonction de la reussite/echec de l'action*/
		public String createEmployeeSkillAction() {
			log.debug("createEmployeeSkillAction()");
 
			if (experienceSelectedItem == null || skillSelectedItem == null) {
				log.debug("createEmployeeSkillAction() > item(s) null : experienceSelectedItem="+experienceSelectedItem+" | skillSelectedItem="+skillSelectedItem);
				return "warn";
			}
 
			try {
 
				int employeeId=this.displayedEmployee.getId();
				int experienceId=Integer.valueOf(experienceSelectedItem);
				int skillId=Integer.valueOf(skillSelectedItem);
 
				log.debug("createEmployeeSkillAction() > Employee id  ="+ employeeId + " - Experience id=" +  experienceId + " - Skill Id" + skillId);
 
				// Recuperation des objets selectionnees dans les listes deroulantes
				Experience createdExperience = experienceService.getExperience(experienceId);
				Skill createdSkilm = skillService.getSkill(skillId);
 
				// Sauvegarde objet EmployeeSkill (Competences Employes) manipule
				displayedEmployeeSkill = new EmployeeSkill();
				displayedEmployeeSkill.setEmployeeId(employeeId);
				displayedEmployeeSkill.setExperience(createdExperience);
				displayedEmployeeSkill.setSkill(createdSkilm);
 
				this.employeeSkillService.saveEmployeeSkill(this.displayedEmployeeSkill);
				addInfoMessageInContext("createOK","Competence Collaborateur :","Creation effectue avec succes");
 
				getEmployeeSkills();
 
				return "success";
			} catch (Exception e) {
				e.printStackTrace();
				return "failure";
			}
		}
 
		/** Methode chargee de retourner une collection 
                         * contenant l'ensemble des competences
                         *  de l'employe manipule dans l'IHM.
                         * @return Collection d'objet EmployeeSkill correspondant e ll'ensemble des competences de l'employe manipule dans l'IHM */
			public Collection <EmployeeSkill> getEmployeeSkills() {
				employeeSkills = displayedEmployee.getSkills();
 
				return employeeSkills;
			}
Fichier Managed Bean XML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
	<managed-bean>
		<description>
				Bean managée relatif à la classe Controller Employees.
		</description>
		<managed-bean-name>employeesController</managed-bean-name>
		<managed-bean-class>
			com.gesco.web.controllers.EmployeesController
		</managed-bean-class>
	</managed-bean>

Fichier web.xml
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
 
    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>server</param-value>
    </context-param>
 
 
        <context-param>
                <param-name>
                        org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION
                </param-name>
                <param-value>7</param-value>
                <description>
                        Only applicable if state saving method is "server" (=
                        default). Defines the amount (default = 20) of the latest
                        views are stored in session.
                </description>
        </context-param> 
 
         <context-param>
        <param-name>org.apache.myfaces.COMPRESS_STATE_IN_SESSION</param-name>
        <param-value>false</param-value>
     </context-param>
 
        <context-param>
                <param-name>
                        org.apache.myfaces.SERIALIZE_STATE_IN_SESSION
                </param-name>
                <param-value>false</param-value>
        </context-param>
MERCI DE VOTRE AIDE PRECIEUSE