IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tapestry Java Discussion :

[Tapestry 4] Composant @For


Sujet :

Tapestry Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2002
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 41
    Par défaut [Tapestry 4] Composant @For
    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

  2. #2
    Membre émérite

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    As tu trouvé depuis ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/06/2014, 17h56
  2. Réponses: 3
    Dernier message: 02/09/2011, 15h26
  3. For each sur Composant ? Initialiser des composants.
    Par 19cmos83 dans le forum Interfaces Graphiques en Java
    Réponses: 8
    Dernier message: 11/10/2007, 11h02
  4. Re-dimensionnement automatique de composants
    Par ludo_7 dans le forum C++Builder
    Réponses: 10
    Dernier message: 16/05/2002, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo