Bonjour,
J'essaie de récupérer les données d'un formulaire .xhtml, et de les mettre ensuite dans les attributs de la classe ManagedBeans, et enfin d'ajouter ces attribue à ma List du ManagedBeans. Et cette list est visualisé dans une autre page xhtml. En fait, j'ai essayé de faire ce tuto :
http://wwwdi.supelec.fr/hardebolle/t...E_23-forms.php
Je pense que je n'ai pas bien compris, vu que ça ne marche pas. J'ai comparé avec pleins d'autres tutoriels. J'ai lu la doc, mais je ne vois vraiment pas où est le problème. Je n'ai pas d'erreur de compilation, c'est juste que je n'arrive pas à prendre les données du formulaire pour les mettre dans ma list du beans. Quand je soumets ma requête en appuyant sur le bouton submit, et mes données sont toujours à 0 ou null. Elles n'ont pas pris les entrées du formulaire.
Voici mon code :
Dans le formulaire, j'essaye de remplir les champs/attributs id, name et price de la classe myManagedBean grâce au langage EL:
Mon ManagedBeans avec tous les accesseurs, getters, etc... Une data est composée d'un id, d'un name et d'un price.
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 <?xml version="1.0" encoding="UTF-8"?> <!-- To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. --> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <h:head> <link href="style.css" rel="stylesheet" type="text/css" /> <title>Add Data</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> </h:head> <h:body> <f:view> <h:form> <fieldset> <h:outputLabel for="fieldId" value="id :" /> <h:inputText id="fieldId" value="#{myManagedBean.id}" required="true" /> <br /> <h:outputLabel for="fieldName" value="name : " /> <h:inputText id="fieldName" value="#{myManagedBean.name}" required="true" /> <br /> <h:outputLabel for="fieldPrice" value="price : " /> <h:inputText id="fieldPrice" value="#{myManagedBean.price}" required="true" /> <br /> </fieldset> </h:form> <h:form> <h:commandLink action="#{myManagedBean.createData()}"> <h:button value="submit"/> </h:commandLink> <h:commandLink action="case3"> <h:button value="return"/> </h:commandLink> </h:form> </f:view> </h:body> </html>
D'après ce que j'ai compris les attribut id, name et price, devrait prendre les valeurs du formulaire, quand la fonction createData() est appelée dans le formulaire.
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 package logic; import facade.DataFacade; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.annotation.PostConstruct; import javax.ejb.EJB; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; import model.Data; @ManagedBean @RequestScoped public class MyManagedBean implements Serializable{ private int id; private String name; private double price; private List<Data> myList; public MyManagedBean() { this.myList = new ArrayList<Data>(); } @PostConstruct public void myInitMethod(){ Data d1 = new Data(78,"kibi",5); this.myList.add(d1); Data d2 = new Data(589,"paçokita",12); this.myList.add(d2); myList.addAll(datafacade.findAll()); } public List<Data> getMyList() { return myList; } public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } public void setPrice(double price) { this.price = price; } public int getId() { return id; } public String getName() { return name; } public double getPrice() { return price; } public void setMyList(List<Data> myList) { this.myList = myList; } public String createData(){ Data d = new Data(id,name,price); myList.add(d); return "case4"; } }
Voici les règles de configuration, mais je ne pense pas que le problème vient de là:
une idè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 <?xml version='1.0' encoding='UTF-8'?> <faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"> //il y avait d'autres règles avant, mais n'ont rien avoir <navigation-rule> <from-view-id>/addData.xhtml</from-view-id> <navigation-case> <from-outcome>case4</from-outcome> <to-view-id>/viewData.xhtml</to-view-id> <redirect /> </navigation-case> </navigation-rule> </faces-config>
Partager