Bonjour tout le monde,
Je suis tout neuf dans l'utilisation du framework MVC Tapestry et de ce que j'en est vue, il est selon moi le plus puissant et le plus facile des framework pour la création de site web, même complexe.
J'utilisais Struts avant mais là, je suis passé à Tapestry![]()
Bon, alors mon problème est le suivant: Tapestry ne retrouve pas mon objet contenu dans ma Collection (ArrayList) à partir du composant For
Template Home.html
La classe Home.java
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 <html jwcid="@Shell" title="Prototype: Gestionnaire d'event"> <body> <p> <h2>Liste des évènements</h2> <table cellspacing="10" border="0"> <tr> <td>Titre</td> <td>Date</td> <td>Heure</td> </tr> <tr> <td colspan="3"><hr/></td> </tr> <tr jwcid="@For" source="ognl:eventList" value="ognl:event" element="tr"> <td><span jwcid="@Insert" value="ognl:event.titre">Chasse aux Yubos</span></td> <td><span jwcid="@Insert" value="ognl:event.date">05/08/2006</span></td> <td><span jwcid="@Insert" value="ognl:event.heure">20:30 GMT+1</span></td> </tr> <tr jwcid="$remove$"> <td>Chasse aux Yubos</td> <td>05/08/2006</td> <td>20:30 GMT+1</td> </tr> <tr jwcid="$remove$"> <td>Chasse aux Yubos</td> <td>05/08/2006</td> <td>20:30 GMT+1</td> </tr> <tr jwcid="$remove$"> <td>Chasse aux Yubos</td> <td>05/08/2006</td> <td>20:30 GMT+1</td> </tr> </table> </body> </html>
Le logger indique bien que mon objet Event a été instancié et se trouve dans eventList.
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 package prototype.pages; import java.util.*; import org.apache.log4j.*; import org.apache.tapestry.event.*; import org.apache.tapestry.html.*; import org.apache.tapestry.annotations.*; import prototype.datas.*; import prototype.handler.*; public abstract class Home extends BasePage implements PageBeginRenderListener { private static Logger logger = Logger.getLogger(Home.class.getName()); public abstract ArrayList<Event> getEventList(); public abstract void setEventList(ArrayList<Event> event); public void pageBeginRender(PageEvent event) { logger.info("Exécution de \"pageBeginRender\""); EventHandler eh = new EventHandler(); ArrayList<Event> eventList = eh.getEventList(); logger.debug(eventList.toString()); setEventList(eventList); } }
La classe Event est un simple bean se trouvant dans mon package
prototype.datas.
C'est mon handler qui se trouve dans prototype.handler qui s'occupe de l'instancier et de créer l'ArrayList eventList
Et voilà l'erreur (version light vu la taille de la page![]()
Le descripteur de l'application tout simple :
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 org.apache.tapestry.BindingException Unable to update OGNL expression '<parsed OGNL expression>' of $Home_0@35dc95[Home] to prototype.datas.Event@1ebf4ff: $Home_0.event binding: ExpressionBinding[Home event] location: context:/Home.html, line 15 10 <td>Heure</td> 11 </tr> 12 <tr> 13 <td colspan="3"><hr/></td> 14 </tr> 15 <tr jwcid="@For" source="ognl:eventList" value="ognl:event" element="tr"> 16 <td><span jwcid="@Insert" value="ognl:event.titre">Chasse aux Yubos</span></td> 17 <td><span jwcid="@Insert" value="ognl:event.date">05/08/2006</span></td> 18 <td><span jwcid="@Insert" value="ognl:event.heure">20:30 GMT+1</span></td> 19 </tr> 20 <tr jwcid="$remove$"> org.apache.hivemind.ApplicationRuntimeException Unable to update OGNL expression '<parsed OGNL expression>' of $Home_0@35dc95[Home] to prototype.datas.Event@1ebf4ff: $Home_0.event component: $Home_0@35dc95[Home] location: context:/Home.html ognl.NoSuchPropertyException $Home_0.event name: event target: $Home_0@35dc95[Home] Stack Trace: ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:133) ognl.OgnlRuntime.setProperty(OgnlRuntime.java:1629) ognl.ASTProperty.setValueBody(ASTProperty.java:105) ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177) ognl.SimpleNode.setValue(SimpleNode.java:246) ognl.Ognl.setValue(Ognl.java:476) org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.
J'ai dû râter quelque chose mais je ne vois pas quoi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?xml version="1.0"?> <!DOCTYPE application PUBLIC "-//Apache Software Foundation//Tapestry Specification 4.0//EN" "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd"> <application> <meta key="org.apache.tapestry.page-class-packages" value="prototype.pages"/> </application>![]()
Merci d'avance![]()
Partager