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 :

Récupérer constante Java


Sujet :

Taglibs Java

  1. #1
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut Récupérer constante Java
    Bonjour,

    J'ai déclaré une constante (static) dans une classe Java, que j'importe partout où cette constante est utilisée (pour centraliser la configuration).

    Dans une JSP avec scriptlet ça donne :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page import="config.XMLPath" %>
    Récupérée ensuite avec :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <%= XMLPath.XMLPath %>

    Maintenant j'aimerais m'affranchir au maximum des scriptlets, et utiliser la JSTL :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <%@ page import="config.XMLPath" %>
    <c:import url="${XMLPath.XMLPath}receive.xml" varReader="receivereader"/>

    Ceci ne marche pas, mais c'est pour que vous compreniez mon intention. Comment faire ?

    PS : J'ai mis Code XML juste pour le formatage.

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    J'ai encore pas réussi à accéder à une de mes variables avec les JSTL :'( Même une variable "error" enregistrée dans le scope Application, ça avait l'air pourtant simple...

    J'ai essayé :
    ${XMLPath.XMLPath}
    ${XMLPath}
    ${pageScope["XMLPath"]}
    ${pageScope["XMLPath.XMLPath"]}

    J'ai rajouté un getter à ma classe XMLPath, qui est devenue :

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    package config;
     
    public class XMLPath {
        // Chemin absolu des fichiers XML
        public static String XMLPath = "D:/Documents and Settings/user/Bureau/XML/";
     
        public static String getXMLPath() {
            return XMLPath;
        }
    }

    Rappel : <%= XMLPath.XMLPath %> et maintenant <%= XMLPath.getXMLPath() %> marchent très bien !

  3. #3
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Je reposte tout seul dans mon topic

    Il semblerait que le combo JSTL / EL soit très limité malgré son aspect séduisant.
    Pour récupérer ma variable, j'ai finalement fait :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <% pageContext.setAttribute("XMLPath", new String(XMLPath.XMLPath)); %>
    <c:import url="file:///${XMLPath}fichier.xml" var="fichierxml"/>
    Donc y'a un peu de scriptlet.

    Plus compliqué, ce cas-ci :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <% if(portletSession.getAttribute("error", portletSession.APPLICATION_SCOPE)!=null) { %>
           <span style="color: red"><%= (String)portletSession.getAttribute("error", portletSession.APPLICATION_SCOPE) %></span><br />
    <%     portletSession.removeAttribute("error", portletSession.APPLICATION_SCOPE);
       } %>
    La seule façon que je connaisse de supprimer une variable en JSTL est le très limité <c:remove />. Dans mon cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <c:remove var="error" />
    Le souci c'est qu'avant je veux l'afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <c:out value="${error}" />
    ou juste ${error}
    Le c:out utilise une EL alors que le c:remove non ! Voilà le vrai problème : les EL sont apparemment interprétées après le JSTL pur, du coup au moment de regarder ${error}, le remove est déjà passé par là, la variable n'existe plus ! Du coup je suis obligé d'utiliser les scriptlets une fois de plus.

    Si vous avez des astuces à partager, elles sont les bienvenues.

Discussions similaires

  1. inserer une image dans MYSQL et récupérer avec JAVA
    Par ulysse031 dans le forum AWT/Swing
    Réponses: 39
    Dernier message: 26/07/2010, 11h50
  2. Récupérer contenu java.library.path
    Par seiryujay dans le forum Général Java
    Réponses: 5
    Dernier message: 03/05/2007, 10h40
  3. [POO] Récupérer objet java dans script javascript
    Par Mister Nono dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/10/2006, 16h42
  4. Réponses: 10
    Dernier message: 24/05/2005, 14h09
  5. [JAR]Constantes Java
    Par Coulon Arnaud dans le forum Général Java
    Réponses: 17
    Dernier message: 20/01/2005, 17h43

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