Bonjour,
J'ai un bête formulaire avec un champ de texte et deux listes déroulantes :
Et voici le code de mon bean car :
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 <%@ include file="includes/header.jsp" %> <script language="JavaScript" type="text/javascript" src="public/ajax.js"></script> <f:view> <h:form> <table> <tr> <td>Nom de la voiture :</td> <td><h:inputText id="name" value="#{car.name}" /></td> </tr> <tr> <td>Marque :</td> <td> <h:selectOneMenu onchange="updateType()" id="brand"> <f:selectItems value="#{car.brand}"/> </h:selectOneMenu> </td> </tr> <tr> <td>Modèle :</td> <td id="type"> <h:selectOneMenu id="selectedModel" value="#{car.selectedModel}"> <f:selectItems value="#{car.model}"/> </h:selectOneMenu> </td> </tr> <tr> <td colspan="2"><h:commandButton id="test" value="Ajouter" action="#{car.insert}" /></td> </tr> </table> </h:form> </f:view> <%@ include file="includes/footer.jsp" %>
Le problème est que quand je clique sur le bouton ajouter ça n'ajoute rien... Et j'ai fais des tests avec des System.out.println lorsque les méthodes "set" sont appelée elle n'assigne rien. La valeur est vide. Je ne comprend pas pourquoi. Ensuite j'ai créé une méthode testInsert() pour voir si la méthode est appelée, j'ai bien évidemment modifié le bouton h:command pour appelé cette méthode et non pas la méthode insert. Mais la méthode n'est pas appelée.
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 public class CarController { private String name; private String selectedModel; public String getSelectedModel() { return selectedModel; } public void setSelectedModel(String selectedModel) { this.selectedModel = selectedModel; } public List<SelectItem> getBrand() { Cars car = new Cars(); return car.getBrandItemList(); } public void setBrand(String item) { } public List<SelectItem> getModel() { Cars car = new Cars(); return car.getModelItemList(); } public void setModel(String item) { } public void setName(String name) { this.name = name; } public String getName() { return name; } public void insert() { Cars cars = new Cars(); cars.insertCar(name, Integer.parseInt(selectedModel), Integer.parseInt(selectedModel)); } public void testInsert() { Cars cars = new Cars(); cars.insertCar("Test", 1, 2); } public List<SelectItem> getAjaxModel() { FacesContext fc = FacesContext.getCurrentInstance(); Object brand = fc.getExternalContext().getRequestParameterValuesMap().get("brand"); if(brand != null) { Cars cars = new Cars(); String[] tmpBrand = (String[]) brand; return cars.getModelItemList(tmpBrand[0]); } return null; } }
Par contre lorsque je supprime la deuxième liste (selectedModel) la méthode est appelée mais les "set" ne fonctionnent toujours pas.
Je ne sais plus quoi faire ! J'ai déjà passé une bonne dizaine d'heure sur ce problème. Je vous donne encore une partie de mon faces-config.xml :
Merci d'avance pour votre aide.
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 <managed-bean> <managed-bean-name>car</managed-bean-name> <managed-bean-class>ch.bfh.ti.controller.CarController</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> <managed-property> <property-name>name</property-name> <property-class></property-class> <value></value> </managed-property> <managed-property> <property-name>selectedModel</property-name> <property-class></property-class> <value></value> </managed-property> </managed-bean>
Partager