Bonjour,
J'ai crée une application en JSF 2 qui charge un fichier JSON depuis un emplacement puis renvoi la valeur du nom property dans le fichier JSON. Or la valeur de ce champ possède un . (valeur.desc).
Les données sont chargées dans une ArrayList récupérant un header et une property.
J'ai le message d'erreur suivant :
Je suis obligé d'utiliser cette syntaxe en . pour la propriété.
Code : Sélectionner tout - Visualiser dans une fenêtre à part javax.servlet.ServletException: /list.xhtml: Property 'valeur.desc' not found on type
Code json : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 { "entity" : "poste", "columns": [{ "header": "uniteTravailList.title", "property": "uniteTravail.lib" }] }
Code jsf : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <p:columns value="#{listForm.pivotTable.columns}" var="column" columnIndexVar="colIndex" sortBy="#{data[column.property]}" filterBy="#{data[column.property]}"> <f:facet name="header"> #{text[column.header]} </f:facet> #{data[column.property]} </p:columns>
Code java : 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 @ManagedBean("listForm") @Component("listForm") @RequestScoped public class ListForm extends BasePage implements Serializable { private static final long serialVersionUID = 1L; private DynamicTable pivotTable = new DynamicTable(this.getEntity()); public ListForm() { } public DynamicTable getPivotTable() { pivotTable.setEntityName(this.getEntity()); return pivotTable; } public void setPivotTable(DynamicTable pivotTable) { this.pivotTable = pivotTable; } }
Code java : 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 public class DynamicTable implements Serializable { private static final long serialVersionUID = 7863262235394607247L; private List<ColumnModel> columns; private List datas = new ArrayList(); private String entityName; private GenericManager<BaseObject, Long> manager; private Method m; public DynamicTable(String entityName) { this.entityName = entityName; } public String getEntityName() { return entityName; } public void setEntityName(String entityName) { if (this.entityName == null) { this.entityName = entityName; } } /** * Méthode permettant de récupérer la liste des données du tableau * * @return La liste des données en fonction de l'entité */ public List getDatas() { if (this.getEntityName() != null) { manager = ManagerUtils.getEntityManager(this.getEntityName()); if (manager != null) { datas = manager.getAll(); return datas; } } return null; } /** * Méthode permettant de récupérer la liste des colonnes du tableau * * @return La liste des colonnes contenu dans le fichier json * @throws org.json.JSONException */ public List<ColumnModel> getColumns() throws JSONException { try { JSONObject mJsonObj = FileReaderUtil.loadJSONFile("poste.json"); JSONArray jsonColumns = mJsonObj.getJSONArray("columns"); columns = new ArrayList<ColumnModel>(); for (Object object : jsonColumns) { JSONObject jsonColumn = (JSONObject) object; columns.add(new ColumnModel(jsonColumn.getString("header"), jsonColumn.getString("property"))); } return columns; } catch (IOException ex) { Logger.getLogger(DynamicTable.class.getName()).log(Level.SEVERE, null, ex); } return null; } }
Merci d'avance.
Transact.
Partager