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

Servlets/JSP Java Discussion :

Syntaxe EL pour l'accès aux collections


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Par défaut Syntaxe EL pour l'accès aux collections
    Bonjour

    Je n'arrive pas à accéder à certains éléments dans une jsp.

    En principe, une expression du type ${form.individu.adresses[0].ville} me renvoie la ville de la première adresse d'un individu qui se trouve dans un attribut de la requête/session nommé "form". Jusque là, je ne dis pas de bêtises ?

    Maintenant, les 2 informations "form" et "individu.adresses[0].ville" sont passés (sous cette forme : il s'agit de texte) en paramètre à une balise jsp. J'aimerais donc récupérer les objets correspondants en écrivant quelque chose comme ${requestScope[paramForm][paramReste]}

    Et ça ne marche pas parce que paramReste ne devrait contenir le nom que d'un seul attribut, la séquence "individu.adresses[0].ville" n'est pas interprétée correctement (l'analyseur de la jsp me dit que cet attribut n'existe pas, sans le décomposer apparemment).

    Des idées ?

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    961
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 961
    Par défaut
    J'ai souvent eu le cas où un trop grand nombre de "." successifs dans une jsp aboutit à un plantage. Dans ce cas, je crée un objet dédié à la page, dont chaque champ correspond à un champ de la page. Ca fonctionne parce qu'il n'y a qu'un seul point.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Par défaut
    Merci de votre réponse

    Dans mon cas, la formulation ${form.individu.adresses[0].ville} fonctionne correctement.

    Mon problème et que j'ai un attribut qui contient la chaîne "form" et un autre qui contient la chaîne "individu.adresses[0].ville" et j'aimerais récupérer l'objet correspondant (celui que j'aurais en tapant la forme du paragraphe précédent).

    Quand j'ai deux attributs a1 et a2 dans une balise jsp perso, contenant respectivement "form" et "attribut1", je peux faire ${requestScope[a1][a2]}, ce que je peux écrire en dur sous cette forme : ${form.attribut1}. Mais si a2 contient quelque chose de plus compliqué (une séquence d'attributs), la forme avec requestScope ne fonctionne pas.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Je ne parviens pas bien à saisir ce que tu veux faire...

    Citation Envoyé par kkort Voir le message
    Mon problème et que j'ai un attribut qui contient la chaîne "form" et un autre qui contient la chaîne "individu.adresses[0].ville" et j'aimerais récupérer l'objet correspondant.
    Tu as quelque chose du genre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    request.setAttribute("form", form);
    request.setAttribute("individu.adresse[0].ville", individu.adresse[0].ville);
    request.setAttribute("att1", "form");
    request.setAttribute("att2", "individu.adresse[0].ville");
    Et tu veux résoudre dynamiquement un truc qui ressemblerait à ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${ ${requestScope['att1']} } => form

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je pense qu'il veut parler d'un objet "form" qui contient un objet "individu" qui lui même contient un tableau "adresse" qui elles, contiennent un objet "ville"...
    (mais je peux me tromper )
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Par défaut
    Euh, merci pour votre participation... et désolé pour les explications compliquées !

    Je vais essayer de réexpliquer mon problème plus clairement (effacez ce que j'ai dit avant) :

    * Prenons ces classes de données (avec les références entre elles) :

    Formulaire -> Individu -> Adresse (il s'agit d'un collection) -> String (la ville par exemple)

    - En Java, je peux en principe écrire quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monFormulaire.getIndividu().getAdresses().get(0).getVille()
    - Et dans une jsp (si l'objet est dans la requête) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${monFormulaire.individu.adresses[0].ville}
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${requestScope["monFormulaire"]["individu"]["adresses"][0]["ville"]}
    Jusque là, je n'ai pas de problème.


    * Maintenant, j'écris une balise jsp perso qui prend en paramètre deux éléments : le nom de l'objet de base et la chaîne pour atteindre l'attribut.

    En clair, l'utilisation de la balise a cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <maBalise objet="monFormulaire" attribut="individu.adresses[0].ville"  />
    Dans le code de la balise, j'ai donc deux paramètres qui s'appellent objet et attribut. Et je veux écrire quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${requestScope[objet][attribut]}
    Dans le cas d'une utilisation "simple" de la balise, de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <maBalise objet="monFormulaire" attribut="individu"  />
    ça fonctionne, le code est équivalent à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${requestScope["monFormulaire"]["individu"]}
    Mais dans le cas d'une utilisation plus compliquée de la balise, telle que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <maBalise objet="monFormulaire" attribut="individu.adresses[0].ville"  />
    ça ne fonctionne pas, le code est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${requestScope["monFormulaire"]["individu.adresses[0].ville"]}
    et il me dit
    "beuh... ça existe pas l'attribut "individu.adresses[0].ville" "
    alors que j'aurais aimé qu'il décompose ma suite d'attributs pour aller chercher l'individu, puis son adresse, puis sa ville

    Le problème est que ça ne marche manifestement pas avec requestScope parce que le nombre de mes attributs est indéfini et qu'il faut que je les sépare pour utiliser requestScope. Et je ne vois pas non plus comment faire sans, parce que les noms de l'objet et de sa suite d'attributs se trouvent dans les paramètres de la balise. En gros il faudrait que je fasse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${ ${objet}.${attribut} }
    Voilà, voilà, j'espère que c'est plus clair... et que quelqu'un pourra m'aider

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/09/2011, 10h22
  2. Conseil pour un acces aux données a distance
    Par mactwist69 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 09/02/2009, 11h46
  3. Définir des rôles pour l'accès aux EJB
    Par Invité dans le forum Glassfish et Payara
    Réponses: 6
    Dernier message: 21/08/2008, 22h07
  4. Réponses: 19
    Dernier message: 04/04/2006, 14h27
  5. Recherche bêta-testeurs pour composant accès aux données
    Par Rémi Remoussenard dans le forum Access
    Réponses: 4
    Dernier message: 29/11/2005, 23h00

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