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 :

navigation rule Primefaces


Sujet :

JSF Java

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut navigation rule Primefaces
    Bonsoir,

    Est-ce-que il y a un autre moyen de définir la navigation des pages non pas dans le faces-config mais autrement?

    Merci

  2. #2
    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
    Citation Envoyé par ahmedpa Voir le message
    Bonsoir,

    Est-ce-que il y a un autre moyen de définir la navigation des pages non pas dans le faces-config mais autrement?

    Merci
    Oui tu peux faire des redirections dans tes pages xhtml, mais vivement déconséillé, vaut mieux tout centraliser dans le faces-config, en quoi cela te gêne de faire ça?

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    non c'est pas question si ça me gène ou autre ,car c’était dans une discussion.On m'as dit que je peux faire la navigation des pages dans les xhtml. et j'aimerais bien te demander pourquoi c'est déconseillé de mettre la navigation dans les xhtml ?
    Merci

  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
    Parceque les XHtml sont censés ne gérer que la problématique affichage,une page n'est pas censée connaitre laquelle sera chargée quand elle rendra la main.La logique de navigation doit être découplée du contenu des pages.

  5. #5
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Citation Envoyé par ahmedpa Voir le message
    Bonsoir,

    Est-ce-que il y a un autre moyen de définir la navigation des pages non pas dans le faces-config mais autrement?

    Merci
    Bonjour,

    Si tu utilises NetBeans: dans le package "jsf.util" du package "source" il y a un fichier PaginationHelper.java, tu peux t'en inspirer. En principe il s'agit de créer un fichier NavigationRules.java dans le package "jsf.util" et d'y créer une classe du genre
    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
     
    @ManagedBean(name = "navigationRules")
    @SessionScoped
    public class NavigationRules implements Serializable {
     
    private boolean modified = false;
    private boolean needCollectionReload = true;
    ...
    private String pageToLoad = "";
    private String editObjectPage = "/dossier_de_Web Pages/pageEdit.xhtml";
     
        public String pageToLoad() {
            this.modified = false;
            this.needCollectionReload = true;
            return pageToLoad;
        }
     
        public void setPageToLoad(String pageToLoad) {
            this.pageToLoad = pageToLoad;
        }
     
        public void prepareObjectPage() {
            setPageToLoad(editObjectPage);
        }
     
    // autres getters, setters et règles de navigation 
     
    }
    Puis tu importes ce fichier dans chaqune de tes classes ObjetController.java et y déclares des

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        @ManagedProperty(value = "#{navigationRules}")
        private NavigationRules navigationRules;
    Moi j'aimerais bien savoir si c'est une pratique meilleure comme ça ou de façon "traditionnelle" (méthodes dans chaque controlleur qui initialisent les variables nécessaires et retournent la bonne page). Si quelqu'un pourrait m'éclairer... Merci!

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    Merci pour vos réponses

  7. #7
    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
    Citation Envoyé par ahmedpa Voir le message
    Merci pour vos réponses
    Bonjour,les réponses que t'as récues te satisfont alors? dans ce cas tu peux fermer le post (Résolu) ou sinon tu reprecises et on essaie de te répondre...

  8. #8
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Je suppose que c'est de ma faute:

    Citation Envoyé par Mishulyna Voir le message

    Moi j'aimerais bien savoir si c'est une pratique meilleure comme ça ou de façon "traditionnelle" (méthodes dans chaque controller qui initialisent les variables nécessaires et retournent la bonne page). Si quelqu'un pourrait m'éclairer... Merci!
    Veuillez m'excuser...

  9. #9
    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
    Citation Envoyé par Mishulyna Voir le message
    Moi j'aimerais bien savoir si c'est une pratique meilleure comme ça ou de façon "traditionnelle" (méthodes dans chaque controller qui initialisent les variables nécessaires et retournent la bonne page). Si quelqu'un pourrait m'éclairer... Merci!
    Non c'est une mauvaise pratique que le controller connaisse la page qu'il va retourner. Ce genre d'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private String editObjectPage = "/dossier_de_Web Pages/pageEdit.xhtml";
    est à proscrire dans un Controller, pour la simple raison que le jour que tu vas modifier le nom de la page, penseras tu à y venir impacter? les framework MVC bien conçus délèguent cette navigation aux fichiers de configuration. Exemple JSF (c'est dans le fichier faces-config.xml) Struts (struts-config.xml) etc... . Un controller retourne un message, que ton framework (JSF ou Struts ou etc...) utilise via son fichier de configuration pour savoir sur quelle page rediriger.

  10. #10
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Bonsoir,

    Tout d'abord: merci de votre réponse!

    Par "controller" je comprends une classe "ObjetController.java" du package projet.jsf. Je fais peut-être une confusion des termes...

    Dans ces classes il y a des méthodes "public String prepareCreateObjet(){}" qui initialisent les objets à créer (créent un nouvel objet, réinitialisent les éventuels objets dépendants puis retournent une page "prepareCreateObjet.xhtml" ou des methodes "public String displayObjet(){}" qui ramènent le bon objet de la base de données et retournent la page à afficher. NetBeans génère comme ça les projets et c'est comme ça que j'ai l'habitude de travailler.

    Est-ce que j'ai mal compris votre réponse ou c'est ma façon de travailler qui est mauvaise?

    Edit: je précise que toutes mes pages .xhtml (prepareCreate.xhtml, edit.xhtml ou autre) sont affichées par l'appel à l'une des méthodes de la classe ObjetController.java mais j'ai des collègues qui utilisent ce type de "NavigationRules" d'où mon intérrêt pour le sujet...

    Je n'ai jamais touché au fichier faces-config.xhtml, tout ce qu'il y a dedans c'est généré par NetBeans, c'est à dire
    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
    <?xml version='1.0' encoding='UTF-8'?>
     
    <!-- =========== FULL CONFIGURATION FILE ================================== -->
     
    <faces-config version="2.0"
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
        <application>
            <resource-bundle>
                <base-name>/Bundle</base-name>
                <var>bundle</var>
            </resource-bundle>
            <resource-bundle>
                <base-name>/Bundle</base-name>
                <var>bundle</var>
            </resource-bundle>
        </application>
    </faces-config>
    Pourriez-vous me donner un exemple de ce que je devrais y ajouter?

    Merci!

  11. #11
    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,désolé du retard de ma réponse, en fait mettre explicitement le chemin et le nom d'une page à afficher dans un controleur est déconseillé,la conséquence est une maintenance pas aisée,mais je sais bien que beaucoup de gens le font,quand c'est possible il faut eviter,le mieux c'est de retourner un mot clé qui sera utilisé par ton fichier de config pour afficher la bonne page.En tapant "Navigation in JSF2" tu as des tonnes d'exemples comme ce pdf.C'est juste des bonnes pratiques,après chacun procède comme il veut.

  12. #12
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Merci de votre reponse!

    Citation Envoyé par DevServlet Voir le message
    en fait mettre explicitement le chemin et le nom d'une page à afficher dans un controleur est déconseillé,la conséquence est une maintenance pas aisée
    C'est justement parce que mon projet de fin d'études est nettement plus complexe que les précédents que je voulais explorer d'autres possibilités: vous avez tout à fait raison concernant la maintenance.

    Bien que je dispose du code d'un exemple NavigationRules je voulais savoir si c'est une bonne pratique.

    Citation Envoyé par DevServlet Voir le message
    mais je sais bien que beaucoup de gens le font,quand c'est possible il faut eviter
    Il me semble que ça nécessite une bonne maîtrise du XML, ce qui n'est pas mon cas. Mais l'on peut toujours essayer de corriger les mauvaises habitudes et d'apprendre les bonnes pratiques.

    Encore merci de votre reponse et merci à ahmedpa pour l'amabilité de me permettre poser mes questions à ce sujet!

Discussions similaires

  1. navigation-rule sur l'ensemble des pages
    Par laurent.c123 dans le forum JSF
    Réponses: 9
    Dernier message: 09/02/2009, 00h11
  2. Réponses: 3
    Dernier message: 30/05/2008, 10h39
  3. Réponses: 2
    Dernier message: 24/04/2008, 15h57
  4. Réponses: 2
    Dernier message: 23/04/2008, 19h56
  5. navigation-rule ne marche pas
    Par verbose dans le forum JSF
    Réponses: 5
    Dernier message: 10/10/2007, 10h20

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