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 :

"D'après la TLD, l'attribut n'accepte aucune expression": mais alors, comment JSF peut fonctionner?


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 608
    Par défaut "D'après la TLD, l'attribut n'accepte aucune expression": mais alors, comment JSF peut fonctionner?
    Bonjour,


    Je souhaite afficher un lien porteur d'un attribut title, dont le texte est dans un fichier de propriétés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h:outputLink title="${rsc.txt_tp02_title}" 
    value="jsf/introductionJava.jsp?#TP02">${rsc.txt_tp02}</h:outputLink>
    Je prend une exception à l'affichage: "D'après la TLD, l'attribut title n'accepte aucune expression" (en rouge: la partie fautive).

    Drôlement fûté, je me dis. J'aurais dû rester avec une balise <a>, parce que ça, ça marchait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <a title="${rsc.txt_tp02_title}" 
    value="jsf/introductionJava.jsp?#TP02">${rsc.txt_tp02}</a>
    Comment JSF arrive à rater ça? Ou plutôt comment l'ai-je si mal compris pour ne pas parvenir à faire quelque-chose à la fois d'aussi badin et essentiel?

    Il faut coder toutes les chaines en dur dans toutes les JSP pour avoir le droit d'utiliser les balises JSF? Car je vois peu comment je vais lire un fichier de propriétés ou construire une chaîne de caractères dynamique sans l'employer ensuite par une expression.

    Qu'est-ce que c'est que cette intrigue?


    En vous remerciant,

    Grunt.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Quelle URI/version tu utilises pour la taglib JSF ?
    Les premières taglis utilisaient un moteur d'EL intégré qui ne fonctionne pas avec les JSP 2.0 qui intégré son propre moteur d'EL.

    a++

  3. #3
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 608
    Par défaut
    Par défaut, j'utilise le jeu de jars JSF fournis avec JBoss 5.0.1.GA, un JSF 1.2.

    Je ne crois pas avoir donné une indication particulière de version à employer au niveau de la déclaration de mes tags, mais je pourrai vérifier dans l'après-midi.

    Que dois-je vérifer de bien trouver comme déclaration?
    Ou plutôt, que dois-je m'assurer de ne pas voir, et où?

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Heu... Je peux me tromper mais faut peut-être utiliser les expressions de JSF, donc avec un # à la place du $ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <h:outputLink title="#{rsc.txt_tp02_title}" 
    value="jsf/introductionJava.jsp?#TP02">${rsc.txt_tp02}</h:outputLink>
    a++

  5. #5
    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
    La notation ${} (évaluation par le conteneur) pour les JSF ne fonctionne que si tu utilise des JSP 2.1 ainsi que JSF >=1.2. La version de JSP que tu utilise est déterminée par les entetes de ton web.xml. Peux tu nous montrer le contenu de ton web.xml? Assure toi aussi que tu n'a nis jar de JSF ni tld qui traineraient et cacheraient celles de JBOSS.
    Dans tous les cas, la notation #{} devrais fonctionner

  6. #6
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 608
    Par défaut
    Je vous remercie et je vais faire ces expérimentations et vérifications très bientôt.

    Mais je reste perplexe, car je ne comprends plus la finalité ou le rôle de "l'opérateur" # ici.

    Je le comprenais comme: il existe un getter, mais aussi un setter.

    mais dans le cas de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:outputLink title="#{rsc.txt_tp02_title}" ...
    où rsc désigne un ResourceBundle, j'ai du mal à me représenter ce que cela signifie en "phase setter".
    Mais peut être que je m'égare, et que ce qui me donne mes ressources n'est pas un ResourceBundle comme je le crois, mais un objet spécifique de JSF. Mais même ainsi, ma compréhension reste extrêmement floue.

    Il y a visiblement quelque chose que je me représente mal entre ${x} et #{x}.

    Dans mon esprit, ${x} disait: getX();
    #{x} disait getX(), setX() voire symbolisait une méthode et était x().

    Mais là... je suis perdu.
    #{rsc.txt_tp02_title} =
    rsc.getString("txt_tp02_title") + rsc.setString("txt_tp02_title", value) ?
    txt_tp02_title() ?

    .... je suis vraiment aux fraises niveau comprenette.

Discussions similaires

  1. [JSTL] D'après la TLD, l'attribut items n'accepte aucune expression
    Par wiss20000 dans le forum Taglibs
    Réponses: 27
    Dernier message: 06/07/2015, 18h58
  2. Réponses: 17
    Dernier message: 13/04/2007, 19h17
  3. Réponses: 9
    Dernier message: 17/10/2006, 09h44
  4. [JSTL] D'après la TLD, l'attribut value n'accepte aucune expression
    Par MicroPuce dans le forum Taglibs
    Réponses: 3
    Dernier message: 30/12/2005, 18h44
  5. [JSTL] D'après la TLD, l'attribut value n'accepte aucune expression
    Par azpublic dans le forum Taglibs
    Réponses: 10
    Dernier message: 30/12/2005, 12h06

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