AppDevelopment - Création de la page d’accueil Cr éa tio n de la pa ge d’ ac cu eil Jérô me Laco ur 2015 /04/2 4 09:5 4 Table des matières Choisir une page d’accueil ........................................................................................................................................................................................................ 1. Vous voulez afficher une page statique ....................................................................................................................................................................... Page 1 - dernière modification par Jérôme Lacour le 2015/04/24 09:54 AppDevelopment - Création de la page d’accueil 2. Vous voulez afficher une page de liste générée ........................................................................................................................................................ Customiser la page par défaut ................................................................................................................................................................................................ Dans les applications générées, la page d’accueil (la première page affichée) est appelée la “default page”. La page affichée peut être customisée de deux façons différentes : 1. 1. Utiliser une page d’accueil différente Customiser la page par défaut Choisir une page d’accueil Si vous voulez afficher une page d’accueil spécifique, vous devez implémenter la méthode fr.logica.application.ApplicationLogic.getDefaultPage(User user) pour surcharger l’implémentation faite dans DefaultApplicationLogic. L’implémentation par défaut est la suivante : package fr.logica.application; [... imports ...] /** * Default implementation for the application logic methods. */ public class DefaultApplicationLogic extends AbstractApplicationLogic { [...] public String getDefaultPage(User user) { if (user != null) { return ”/index/defaultPage”; } return ”/index/login”; } [...] } Typiquement dans ApplicationLogic, vous pouvez implémenter la méthode getDefaultPage pour qu’elle retourne une String représentant le chmin d’accès à la page (le fichier .xhtml). Il y a 2 cas d’implémentation : 1. Vous voulez afficher une page statique Pas de problème, vous avez juste à retourner le chemin. Par exemple : “custom/my_page” pour afficher le fichier custom/my_page.xhtml Dans le cas d’un multiapp v4.0 et plus package fr.logica.application; [... imports ...] /** * Default implementation for the application logic methods. */ public class DefaultApplicationLogic extends AbstractApplicationLogic { [...] public String getDefaultPage(String app, User user) { if (user != null) { if (”NOM_DE_APPLICATION”.equals(app){ return ”/includes/custom/my_page.jsf?” + Constants.CURRENT_APP_PARAMETER + ”=” + app + ”&faces-redirect=true”; } } return ”/index/login.jsf?” + Constants.CURRENT_APP_PARAMETER + ”=” + app + ”&faces-redirect=true”; } Page 2 - dernière modification par Jérôme Lacour le 2015/04/24 09:54 AppDevelopment - Création de la page d’accueil [...] } 2. Vous voulez afficher une page de liste générée Dans ce cas, c’est un peu plus compliqué puisque avant d’afficher la liste, le controller doit avoir préparé et exécuté la requête. Pour ce faire, vous pouvez suivre l’exemple suivant : @Override public String getDefaultPage(User user) { if (user != null) { ViewController jsfCtrl = ((ViewController) JSFBeanUtils.getManagedBean(FacesContext.getCurrentInstance(), ”jsfCtrl”)); return jsfCtrl.prepareView(DemProduit.NAME, DemProduitQuery.Query.QUERY_DEM_PRODUIT, ”QUERY_DEM_PRODUIT”); } return ”/index/login”; } v4.0 et plus @Override public String getDefaultPage(User user) { if (user != null) { ViewController viewCtrl = ((ViewController) JSFBeanUtils.getManagedBean(FacesContext.getCurrentInstance(), ”viewCtrl”)); Request<DemProduit> request = new Request<DemProduit>(viewCtrl.getContext(), DemProduit.NAME, DemProduitConstants.Query.DEM_PRODUIT); return viewCtrl.prepareView(request); } return ”/index/login”; } Dans le cas d’un multiapp v4.0 et plus package fr.logica.application; [... imports ...] /** * Default implementation for the application logic methods. */ public class DefaultApplicationLogic extends AbstractApplicationLogic { [...] public String getDefaultPage(String app, User user) { if (user != null) { if (”ENTRETIEN_PREVISIONNEL”.equals(app)) { ViewController viewCtrl = ((ViewController) JSFBeanUtils.getManagedBean(FacesContext.getCurrentInstance(), ”viewCtrl”)); viewCtrl.reset(); return viewCtrl.prepareView(EptxTravauxRecensesConstants.ENTITY_NAME, EptxTravauxRecensesQuery.Query.QUERY_MENU_EPTXDW_BATI_A_VENIR, ”MENU_EPTXDW_BATI_A_VENIR_LIST”); } } return ”/index/login.jsf?” + Constants.CURRENT_APP_PARAMETER + ”=” + app + ”&faces-redirect=true”; } [...] } Customiser la page par défaut Si vous voulez afficher des données statiques ou des données préparées par des controlleurs customisés, vous pouvez aussi choisir de customiser le fichier “index/defaultPage.xhtml”. Le fichier généré par défaut est le suivant : Page 3 - dernière modification par Jérôme Lacour le 2015/04/24 09:54 AppDevelopment - Création de la page d’accueil <ui:composition xmlns=”http://www.w3.org/1999/xhtml” xmlns:ui=”http://java.sun.com/jsf/facelets” template=”/templates/generic.xhtml” xmlns:h=”http://java.sun.com/jsf/html” xmlns:f=”http://java.sun.com/jsf/core” xmlns:logica=”http://java.sun.com/jsf/composite/logica” xmlns:hh=”http://cgi.com/jsf/html”> <ui:define name=”title”>Application - <h:outputText value=”#{ sessionCtrl.version} ” /></ui:define> <ui:define name=”body”> <div class=”actions”> <table style=”width: 100%”> <tr> <td style=”display: none;”> Bienvenue sur l’application. </td> </tr> </table> </div> </ui:define> </ui:composition> Comme vous pouvez le voir, il s’agit d’un fragment de page JSF2 tout à fait classique. Vous pouvez changer le contenu du tag <ui:define name=”body”> et utiliser tout le code HTML que vous voulez. Vous pouvez aussi appeler des méthodes à partir de n’importe quel controlleur et tous les tags JSF2 (standard ou custom) Avec un peu de travail, vous pourrez réussir à créer des pages complexes de tableau de bord telle que celle qui suit: Pour ce type de travail, il vous faudra une certaine expérience en développement JSF2. Par exemple, pour désigner une telle page, nous avons développé: • • • Un controlleur custom pour obtenir et préparer les données (nous utilisons notre framework DB pour interroger la base) Le code HTML de la page par défaut pour afficher ces données Et les graphiques sont pris de la library JS Raphael Vous pouvez voir le code complet dans les documents suivants : • • AccueilController.java defaultPage.xhtml Page 4 - dernière modification par Jérôme Lacour le 2015/04/24 09:54