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 :

Comment accéder à la racine de mon WAR depuis un controller jsf?


Sujet :

JSF Java

  1. #1
    Membre habitué
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 135
    Points
    135
    Par défaut Comment accéder à la racine de mon WAR depuis un controller jsf?
    Bonjour, enfin bonsoir.
    Je suis actuellement en train de faire une application Web EJB3 + JSF + HIBERNATE3.

    J'ai également fait de jolis boutons en javascript qui charge des images différentes en fonction des évènements onmouseover et onmousout.
    Le soucis c'est que le navigateur accuse certaines lenteurs lors du premier affichage, normal l'image n'est pas encore chargée dans le cache.

    Donc j'ai fais un petit javascript qui prend une liste de chemins d'images et qui charge le tout lors de l'event onload. Le soucis, c'est que je n'ai pas envie d'indiquer a mon script toutes la liste des images du menu (elles sont nombreuses). Donc j'ai fait un petit controller déclaré dans mon faces-config.xml qui à une méthode getIhmPictures() et qui renvoi un jolie String avec le path de chacune des images se trouvant dans "/pictures/ihm" et bien évidement dans les arbo sous-jacentes (une arbo par langue)

    Magnifique! ma méthode marche nikel quand je fais appel dans un "main".
    Mais lors de l'execution de l'EAR ce n'est pas tout à fait la même chose...

    Bref! Comment faire pour accéder à mon répertoire picture dans une méthode de mon controller jsf pour que cette dernière puisse me retourner la chaine contenant le path de chacune des images?
    ou plus simplement:
    Comment accéder à la racine de mon WAR depuis un controller jsf?

    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
    
    public class PictureLoader{
    
    
        public static String getMenuPictures(String path) throws IOException {
    
            DirectoryReader dr = new DirectoryReader();
            String out = "";
            for (File file : dr.getListFilesByType(C'est ICI que ça coince...+"pictures/ihm/menu", "(\\w*_\\d*)(.jpg)")) {
                out.concat(file.getPath()+",");
    
            }
    
            return out;
        }
    
    
    }
    Merci d'avance

  2. #2
    Expert éminent sénior
    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
    Points : 48 804
    Points
    48 804
    Par défaut
    depuis une servlet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getServletContext().getRealPath("./")

  3. #3
    Membre habitué
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 135
    Points
    135
    Par défaut
    Merci tchize_, c'est une solution que j'avais envisagé hier mais j'aurais voulu évité d'en écrire une juste pour ca... enfin bon tu me diras ca ne mange pas de pain.
    Donc l'idée serait d'appeler la servlet depuis le controller c'est bien ca?

    (je ne crois pas pouvoir appeler directement la servlet dans les pages puisque je ne suis pas en *.JSP mais en *.xhtml)

    (Tu étais d'astreinte hier ou quoi ? )

  4. #4
    Expert éminent sénior
    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
    Points : 48 804
    Points
    48 804
    Par défaut
    tu peux accéder au contexte de la servlet normalement via le facescontext.

  5. #5
    Membre habitué
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 135
    Points
    135
    Par défaut
    ok, je vais essayer ca ce soir et je te tiendrais au courant.
    Merci pour ton aide

  6. #6
    Membre habitué
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 135
    Points
    135
    Par défaut
    ok j'ai fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    FacesContext fc = Facescontext.getCurrentInstance();
     
    ServletContext sc = (ServletContext) fc.getExternalContext().getContext();
     
    File monRep = new File(sc.getRealPath("pictures"));
    Et ca fonctionne bien merci

    J'ai juste une autre question qui n'est pas en rapport avec celle ci mais peut-on appeler un contrôleur jsf depuis un autre? si oui: how?

  7. #7
    Expert éminent sénior
    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
    Points : 48 804
    Points
    48 804
    Par défaut
    qu'est-ce que tu appelle un contrôleur jsf?

  8. #8
    Membre habitué
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 135
    Points
    135
    Par défaut
    un managed-bean

  9. #9
    Expert éminent sénior
    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
    Points : 48 804
    Points
    48 804
    Par défaut
    tu peux relier des managed-bean entre eux facilement grace aux lanaged properties, via le face-config.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <managed-bean>
      <managed-bean-name>bean1</managed-bean-name>
      <!-- ..... reste du bean, classique -->
    </managed-bean>
    <managed-bean>
      <managed-bean-name>bean2</managed-bean-name>
      <!-- ..... reste du bean, classique -->
      <managed-property>
        <property-name>bean1</property-name>
        <value>#{bean1}</value>
      </managed-property>
    </managed-bean>
    Ensuite dans ta classe correspondant à bean2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     .....
     public Bean1 getBean1() {return bean1;}
     public void setBean1(Bean1 bean1) {this.bean1=bean1;}
     .....
     bean1.uneMethodeDeBean1();
     .....

  10. #10
    Membre habitué
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 135
    Points
    135
    Par défaut
    ca roule merci bien pour ton aide précieuse!!
    je vais clôturer le sujet.

    ++

  11. #11
    Membre habitué
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 135
    Points
    135
    Par défaut
    Hello tchize_! En fait l'idée serait d'accéder à un managed-bean depuis un phase-listener et non pas d'un autre managed bean. As tu une solution?

    Merci d'avance

  12. #12
    Expert éminent sénior
    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
    Points : 48 804
    Points
    48 804
    Par défaut
    je ne connais que ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FacesContext ctx = event.getFacesContext();
        VariableResolver vr = ctx.getApplication().getVariableResolver();
        UnBean bean = (UnBean)vr.resolveVariable(ctx, "monBean");

  13. #13
    Membre habitué
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 135
    Points
    135
    Par défaut
    Ba ca m'a l'air d'être ce qu'il me faut

    Je vais essayer ce soir, c'est sympa Merci!

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

Discussions similaires

  1. Comment accéder à mon serveur depuis l'extérieur?
    Par Bassas dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 08/02/2010, 14h24
  2. [Debutant] Comment accéder à mon application web depuis un autre pc?
    Par Perfourras dans le forum Glassfish et Payara
    Réponses: 5
    Dernier message: 10/06/2008, 22h09
  3. Réponses: 4
    Dernier message: 23/04/2008, 16h29
  4. Réponses: 3
    Dernier message: 11/12/2006, 19h27
  5. Réponses: 1
    Dernier message: 30/06/2006, 11h59

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