Création de la page d`accueil

publicité
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
Téléchargement