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
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
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
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.
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
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
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 }
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!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 @ManagedProperty(value = "#{navigationRules}") private NavigationRules navigationRules;
Non c'est une mauvaise pratique que le controller connaisse la page qu'il va retourner. Ce genre d'instruction :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part private String editObjectPage = "/dossier_de_Web Pages/pageEdit.xhtml";
Partager