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> </c:verbatim> </h:column> </t:dataTable> </h:panelGrid> </a4j:outputPanel> </t:panelTab> </t:panelTabbedPane> </h:form> </c:subview>
Managed Bean (employeesContorller)
Fichier Managed Bean 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
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; }
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
MERCI DE VOTRE AIDE PRECIEUSE
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>![]()
Partager