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

JSF Java Discussion :

[EL] Question sur l'expression language


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Par défaut [EL] Question sur l'expression language
    Bonjour,

    J'aurais une question à vous soumettre concernant l'expression language. Voila j'aimerais récupérer un élément dans une Map en donnant la clé dynamiquement de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:outputText value="#{DatabaseTableBean.arraySelection[(DatabaseTableBean.columnTableName + '_NAME')]}"/>
    Mais le problème c'est que j'ai une erreur quand je lance ma page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
    java.lang.NumberFormatException: For input string: "DOMAIN"
    C'est très explicite, c'est une histoire de conversion. Mais je vois pas comment régler ce problème. Parce que si je mets la clé de la Map en dur dans la page JSF ça marche. Et pareil si je met la valeur en dur dans la variable columnTableName ça marche aussi.

    Donc ma question est : Est-ce que l'on peut faire de la concaténation directement dans la page JSF pour une clé ?

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    le + en EL n'est utilisable que pour les nombre, donc il essaie de convertir les deux morceaux en nombre. Si tu veux faire de la concaténation, il va te falloir créer ta propre méthode de concaténation pour aboutir à quelque chose comme ça.

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:outputText value="#{DatabaseTableBean.arraySelection[myNamespace:concat(DatabaseTableBean.columnTableName,'_NAME')]}"/>

    Pour créer des fonctions custom, tout dépend de la manière dont gère tes pages (JSP, facelets, ...?)

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Par défaut
    Merci pour ta réponse, je vais essayé la fonction concaténation. Je ne savais pas qu'on pouvait exécuter des fonctions dans une expression langage. Sinon je crois que je gère mes pages en JSP (j'utilise des tags lib).

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    on peux définir des fonctions et les utiliser. Facelets, par défaut, fournis aussi l'ensemble des fonctions JSTL.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Par défaut
    Alors j'ai réussi à créé deux fonctions concaténation et comparaison et elles fonctionnent très bien. Par contre lorsque j'utilise le tag <rich:columns> (de la bibliothèque Richfaces) les fonction ne marchent pas quand je les utilise dans l'attribut rendered :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <rich:columns value="#{DatabaseTableBean.columns}" rendered="#{!custom:compare(custom:concatenation(DatabaseTableBean.columnTableName, '_ID'), column.header)}" sortBy="#{model[i]}" sortOrder="#{column.sortOrder}" var="column" index="i" width="#{i==0?'40px':'25%'}">
    J'ai mis un System.out.println("test") dans les fonctions et il ne s'écrit pas dans la console quand j'affiche la page. J'ajoute aussi que je n'ai aucune erreur quand je lance la page. Mais les fonctions marchent très bien lorsque je les utilise autre part dans la page. J'ai testé pas mal de chose mais ça ne marche pas.

    Voila si vous avez une idée.

    Merci d'avance,

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    première réflexion: la colonne s'affiche (je veux dire, son parent ou un de ses parent n'aurait pas déjà rendered=false? ) Dans la page où tu te trouve, la taglib concernant tes methodes custom est bien importée?

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

Discussions similaires

  1. Question sur les Expressions Languages
    Par sepointes dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 18/10/2012, 14h28
  2. Réponses: 2
    Dernier message: 12/04/2007, 11h22
  3. Question sur les expressions régulières
    Par zarbiman dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 03/04/2007, 14h27
  4. Question sur les expressions régulières
    Par espadon1 dans le forum Langage
    Réponses: 2
    Dernier message: 05/07/2006, 08h59
  5. [Débutant] Questions sur Visual Express
    Par Ultiny dans le forum MFC
    Réponses: 10
    Dernier message: 02/03/2006, 16h52

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