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

Taglibs Java Discussion :

impossible à utiliser [DisplayTag]


Sujet :

Taglibs Java

  1. #1
    Invité
    Invité(e)
    Par défaut impossible à utiliser
    Salut (j'ai bien peur de monopoliser le forum Struts en ce moment...)
    j'essaye d'utiliser la taglib displaytag, avec le tuto http://ewawszczyk.developpez.com/tut...ib-displaytag/

    J'ai une List que je parcours avec un logic:iterate.

    Voici ma List :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    			Collection<Demande> tasks = new Vector<Demande>();
     
    			int tasksCount = ret.length;
     
    			for(int i = 0;i<tasksCount;i++)
    			{
    				tasks.add(ret[i]);
    			}
    			request.setAttribute("tasks", tasks);
    Et mon code pour le parcourir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <display:table name="tasks" />
    Et le résultat est une page blanche :/ Je ne sais pas comment débugger ça...

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,
    As tu des traces dans ta console quand tu accèdes à ta page?

    Sinon, la balise display:table en soit ne génère rien à mon avis, il faut définir les colonnes de ton tableau.
    Genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <display:table name="tasks">
      <display:column property="nomDemandeur" title="Nom" />
      ...
    </display:table>
    Le tag column va accéder aux getter de l'objet contenu dans ta collection pour peupler ton tableau.

    Après une remarque comme ça, utiliser la classe Vector n'est peut être pas utile (à moins que tu ais tes raisons). Il est recommandé d'utiliser une ArrayList (ci ref : explication)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Nan je n'ai aucune trace dans ma console
    J'ai bien tenté d'utiliser les colonnes mais rien non plus.

    Encore pire, directement dans mon jsp j'ai créé un List et j'essaye de l'afficher direct après :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <%
    ArrayList<logica.classes.Demande> test = new ArrayList<logica.classes.Demande>();
    logica.classes.Demande demande = new logica.classes.Demande();
    demande.setId(2);
    test.add(demande);
    test.add(demande);
    test.add(demande);
    %>
     
    <display:table name="test">
      <display:column property="id" title="Nom" />
    </display:table>
    Résultat : pareil...

  4. #4
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Tu n'as pas oublié la directive taglib qui référence la tld au début de la jsp par hasard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
    Sinon, dans le dernier cas, c'est normal que ça ne fonctionne pas car par défaut, il cherche la liste dans le scope request.
    Or, là, elle n'y est pas.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Elle y est, c'est juste que je n'ai pas copié tout le code pour la lisibilité. Par contre, il y a une différence par rapport à ta ligne, car je suis derrière un proxy. J'ai donc besoin d'avoir la taglib en dur dans le WEB-INF.

  6. #6
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Citation Envoyé par frinux Voir le message
    J'ai donc besoin d'avoir la taglib en dur dans le WEB-INF.
    Pas nécessairement.
    Si tu es en J2EE 1.4 (Servlet 2.4/JSP 2.0), il faut savoir que les tlds présentes dans les jars (généralement dans le répertoire META-INF) sont automatiquement chargées au démarrage de l'appli et donc, ce n'est pas parce que tu as codé l'uri "http://displaytag.sf.net" que le serveur va chercher la tld sur le net.
    Donc, si tu es en J2EE 1.4, il n'est pas utile de référencer les taglibs dans le web.xml, ni de les copier sous WEB-INF.
    Mais peut-être que ce n'est pas le cas ?

    Bon, ceci dit, ce n'est pas cela qui va corriger ton problème.
    Pourrais-tu montrer le code complet de la page jsp pour voir qu'est-ce qui pourrait provoquer cette page blanche ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Désolé pour le retard de la réponse,
    je suisen servlet 2.4, par contre pour JSP je ne sais pas comment aller voir la version.
    Mon tld est présent dans le jar displaytag-1.1.1.jar, qui est lui même dans le WEB-INF/lib.

    Et voici le code complet 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
     
    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/displaytag.tld" prefix="display" %>
     
     
    <%@page import="java.util.ArrayList"%><jsp:useBean id="_user" class="logica.classes.User" scope="session"/>
    <%@ page import="logica.classes.User" %>
     
    <html:xhtml/>
    <%
    ArrayList<logica.classes.Demande> test = new ArrayList<logica.classes.Demande>();
    logica.classes.Demande demande = new logica.classes.Demande();
    demande.setId(2);
    test.add(demande);
    test.add(demande);
    test.add(demande);
    %>
     
    <display:table name="test">
      <display:column property="id" title="Nom" />
    </display:table>

  8. #8
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Je t'ai dit précédemment que par défaut, il cherche la liste dans le scope request.
    Donc, pour pouvoir afficher la liste test via le tag display:table, il faut la mettre dans le scope request via un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("test",test) ;
    et puis ajoute l'import suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page import="logica.classes.Demande" %>
    Et comme tu es en Servlet 2.4, tu n'es pas obligé de copier la tld sous WEB-INF et tu peux coder la directive taglib comme ceci dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ taglib uri="http://displaytag.sf.net" prefix="display" %>

  9. #9
    Invité
    Invité(e)
    Par défaut
    OK les modifs ont été faites, mais rien n'a changé, toujours la même page blanche...

  10. #10
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Tu n'as aucun message d'erreur ? dans la console ? dans la log du serveur ?

    Et quand tu regardes le code généré de la page, y-a-t'il quelque chose ?

  11. #11
    Invité
    Invité(e)
    Par défaut
    Hum non vraiment rien. J'utilise les tiles dans mon appli, et la page s'arrête à l'endroit ou le tile importé inclue ce code.

  12. #12
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Dans cette page jsp, tu n'as pas besoin de la tld des Tiles.
    Peux-tu enlever la directive taglib suivante de la page pour voir si ça fonctionne mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

  13. #13
    Invité
    Invité(e)
    Par défaut
    Même résultat... :'-(

  14. #14
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,

    Que tu ais une page jsp qui stoppe son chargement sur une page blanche sans laisser de traces parait quand même étonnant...

    Sinon, dans le doute, as tu bien mis dans ton classpath le jar de displaytag et tous les autres jar dont il dépend?

    Sinon, sur le tuto que tu essaies, il y a les sources à la fin, si tu les copies dans ton projet, arrives tu à le faire marcher?

  15. #15
    Invité
    Invité(e)
    Par défaut
    Bon mon problème est résolu. Le problème était apparemment que j'avais dans mon classpath un commons-lang.jar trop vieux. J'ai mis le dernier (2.3) et là ça passe.

    Il reste un point que je n'explique pas, mais au moins maitenant je sais : lorsque j'utilise les tiles, le message d'erreur ne s'affiche que si je tente d'accéder directement à la tile qui comporte uen erreur. Ainsi, j'ai un template qui a 3 tiles : header, body et footer. Si j'accède à la page principale, la page se chargera jusqu'à body, sans message d'erreur. Si j'accède à body direct, j'aurai le message d'erreur.

    C'est bon à savoir. Merci pour votre aide en tout cas, la résolution n'aura pas été si simple...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. USB impossible à utiliser
    Par Flecrocq dans le forum VirtualBox
    Réponses: 3
    Dernier message: 28/09/2010, 16h45
  2. Réponses: 1
    Dernier message: 22/11/2008, 20h50
  3. [GD] Librairie GD impossible à utiliser
    Par Jarodd dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 09/10/2008, 11h17
  4. [BO 6.5] Broadcast Agent impossible à utiliser
    Par valog dans le forum Administration-Migration
    Réponses: 5
    Dernier message: 19/08/2008, 16h02
  5. class héritant de Form, impossible à utiliser ?
    Par Pol63 dans le forum VB.NET
    Réponses: 9
    Dernier message: 01/06/2007, 09h25

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