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

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>
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
 
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);
  }
}
Le logger indique bien que mon objet Event a été instancié et se trouve dans 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

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.
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
 
<?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>
J'ai dû râter quelque chose mais je ne vois pas quoi

Merci d'avance