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 :

Récupérer dans une page JSF la valeur d'un méthode static avec les EL


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de fabou3377
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 182
    Par défaut Récupérer dans une page JSF la valeur d'un méthode static avec les EL
    Bonjour,

    j'ai une classe FacesUtils qui me permet de mettre à disposition des méthodes pour mes pages JSF, notamment pour le context et l'adresse du serveur, celles-ci sont déclarées en static :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
        public static String getServerURL(){
            StringBuffer serverURL = new StringBuffer();
            HttpServletRequest httpRequest = (HttpServletRequest) getExternalContext().getRequest();
            String serverName = httpRequest.getServerName();
            int serverPort  = httpRequest.getServerPort();
            String protocol = httpRequest.getScheme();
            serverURL.append(protocol);
    	                serverURL.append("://");
     	                serverURL.append(serverName);
     	                if (serverPort != 0) {
     	                    if (("http".equals(protocol) && serverPort != 80)
     	                            || ("https".equals(protocol) && serverPort != 443)) {
     	                        serverURL.append(':');
     	                        serverURL.append(serverPort);
     	                    }
     	                }
     	                serverURL.append('/');
            return serverURL.toString();
        }
     
     
        public static String getContextPath(){        
             return getExternalContext().getRequestContextPath();
        }
     
        public static String getAppPath(){
            if(StringUtils.isNotEmpty(getServerURL())&& StringUtils.isNotEmpty(getContextPath())){
              return getServerURL()+getContextPath();
            }
            return "test";
        }
    Ces méthodes fonctionnent parfaitement mais je n'arrive pas récupérer les valeurs dans un pages JSF via les expressions de langages #{facesutils.contextPath}...

    Une idée?

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 129
    Par défaut
    Vérifie la déclaration de la classe dans ton facesConfig , peut être une coquille qui traine?
    Tu as regardé en debug si ça passe bien dans le getter?

  3. #3
    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 : 45
    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 accède pas aux méthodes statiques comme ça, il faut passer par une taglib mappant ta méthode sur une fonction JSF. Avec facelets c'est assez facile, mais j'ignore si tu utilise facelets.

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Bonjour, la suite de ce post m'intéresse,
    J'utilise Facelet, peux tu nous un exemple de déclaration d'une méthode static via facelet? et l'appel aussi.
    Merci d'avance.

  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 : 45
    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
    exemple simple

    1. la taglib custom
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0"?>
     <facelet-taglib xmlns="http://java.sun.com/JSF/Facelet">
         <namespace>http://mynamespace/mytaglib</namespace>
     	<function>
     		<function-name>abc</function-name>
     		<function-class>com.company.MyFunctionClass</function-class>
     		<function-signature>int length(java.lang.String)</function-signature>
     	</function>
     </facelet-taglib>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class MyFunctionClass {
        public static int length(String s) {return s==null?0:s.length();}
    }
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
    	xmlns:ui="http://java.sun.com/jsf/facelets"
    	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:f="http://java.sun.com/jsf/core"
    	xmlns:t="http://myfaces.apache.org/tomahawk"
    	xmlns:montag="http://mynamespace/mytaglib"
    	>
     
     
    ......
    Longueur de chaine= #{montag:length(monBean.unString)}

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Ca passe pas tchize_, voila ma conf :
    taglib :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <function>
         <function-name>getVersion</function-name>
         <function-class>mon_package.ConfigAll</function-class>
         <function-signature>java.lang.String getVersion()</function-signature>
        </function>
    fonction java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     public static String getVersion() {
    	    return getAppliValue(ConstantDivers.APPLI_KEY_VERSION);
    }
    L'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:ui="http://java.sun.com/jsf/facelets"      
          xmlns:rich="http://richfaces.org/rich"
          xmlns:a4j="http://richfaces.org/a4j"
          xmlns:montag="http://mynamespace/mytaglib"   
          xmlns:muc="http://www.epide.fr/muComponents">
    ...
    <h:outputFormat value="Orange plateform : #{montag:getVersion()}" styleClass="dockHeaderTextContent" />
    Qu'est ce qui manque?
    Et autre question à quoi sert l'élément <function-name> puisque tu t'en es pas servi lors de ton appel?
    Merci d'avance.

Discussions similaires

  1. Integrer un taglib dans une page jsf
    Par Sun03 dans le forum JSF
    Réponses: 23
    Dernier message: 28/04/2008, 11h23
  2. Réponses: 3
    Dernier message: 19/04/2008, 17h32
  3. JfreeChart dans une page jsf
    Par hicham.gi dans le forum JSF
    Réponses: 4
    Dernier message: 10/04/2008, 16h02
  4. "Affichage conditionnel" dans une page JSF
    Par Niniz dans le forum JSF
    Réponses: 2
    Dernier message: 19/07/2007, 12h14
  5. Réponses: 6
    Dernier message: 02/04/2007, 19h13

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