IX. UNIFICATION DE L'APPLICATION PAR UN MENU▲
IX-A. Etape 10 : Création d'un menu▲
IX-A-1. Modification du fichier d'internationalisation▲
Ajouter la ligne suivante dans le fichier "Resources.properties".
titre.application=Application de liste de coursesIX-A-2. Création de la JSP "squelette"▲
Créer une JSP "page.jsp" dans "pages".
Remplir "page.jsp" avec :
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="tiles" uri="http://struts.apache.org/tags-tiles" %>
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>
<html:html>
<head>
<title><bean:message key="titre.application"/></title>
</head>
<body>
<table>
<tbody>
<tr>
<td valign="top">
<table>
<tbody>
<tr><td>
<a href="<html:rewrite page="/AfficherListeCourses.do"/>">
<bean:message key="titre.listecourses"/>
</a>
</td></tr>
<tr><td>
<a href="<html:rewrite page="/AfficherCreationElementCourses.do"/>">
<bean:message key="titre.creation.elementcourses" bundle="creation"/>
</a>
</td></tr>
<tr><td>
<a href="<html:rewrite page="/AfficherSuppressionElementCourses.do"/>">
<bean:message key="titre.suppression.elementcourses" bundle="suppression"/>
</a>
</td></tr>
<tr><td>
<a href="<html:rewrite page="/AfficherModificationListeCourses.do"/>">
<bean:message key="titre.modification.elementcourses" bundle="modification"/>
</a>
</td></tr>
</tbody>
</table>
</td>
<td valign="top">
<tiles:insert attribute="principal" />
</td>
</tr>
</tbody>
</table>
</body>
</html:html>IX-A-3. Création du fichier de définition des tiles▲
Créer un fichier XML "tiles-defs.xml" dans "WebContent/WEB-INF".
Remplir le fichier "tiles-defs.xml" avec :
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config_1_3.dtd">
<tiles-definitions>
<!-- Définition de la page d'affichage -->
<definition name="page.affichage" template="/pages/page.jsp">
<put name="principal" value="/pages/listeCourses.jsp" />
</definition>
<!-- Définition de la page de création -->
<definition name="page.creation" template="/pages/page.jsp">
<put name="principal" value="/pages/creation.jsp" />
</definition>
<!-- Définition de la page de suppression -->
<definition name="page.suppression" template="/pages/page.jsp">
<put name="principal" value="/pages/suppression.jsp" />
</definition>
<!-- Définition de la page de modification -->
<definition name="page.modification" template="/pages/page.jsp">
<put name="principal" value="/pages/modification.jsp" />
</definition>
<!-- Définition de la page d'erreur -->
<definition name="page.erreur" template="/pages/page.jsp">
<put name="principal" value="/pages/erreur.jsp" />
</definition>
</tiles-definitions>IX-A-4. Modification du fichier de configuration "struts-config.xml"▲
Rajouter la déclaration des validations dans "struts-config.xml" après la validation des formulaires :
<!-- ========== Tiles =========================== -->
<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config"
value="/WEB-INF/tiles-defs.xml" />
</plug-in>IX-A-5. Modification de la JSP d'erreur▲
Saisir le code suivant pour la JSP "erreur.jsp".
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
<html:errors/><br/>IX-A-6. Modification de la JSP d'affichage▲
Saisir le code suivant pour la JSP "listeCourses.jsp".
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>
<table border="1">
<thead>
<tr>
<th><bean:message key="colonne.identifiant"/></th>
<th><bean:message key="colonne.libelle"/></th>
<th><bean:message key="colonne.quantite"/></th>
</tr>
</thead>
<tbody>
<logic:iterate id="elementCourse" name="LISTE_COURSES" type="com.developpez.rpouiller.monapplication.ElementCourseBean">
<tr>
<td><bean:write name="elementCourse" property="idObjet"/></td>
<td><bean:write name="elementCourse" property="libelle"/></td>
<td><bean:write name="elementCourse" property="quantite"/></td>
</tr>
</logic:iterate>
</tbody>
</table>IX-A-7. Modification de la JSP de création▲
Saisir le code suivant pour la JSP "creation.jsp".
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>
<%@ taglib prefix="nested" uri="http://struts.apache.org/tags-nested" %>
<b><i><html:errors/></i></b><br/>
<html:form action="/CreerCreationElementCourses.do">
<bean:message key="creation.elementcourses.libelle.libelle" bundle="creation"/>
<nested:text property="libelle"/><br>
<bean:message key="creation.elementcourses.libelle.quantite" bundle="creation"/>
<nested:text property="quantite"/><br>
<html:submit/>
</html:form>
<table border="1">
<thead>
<tr>
<th><bean:message key="colonne.identifiant"/></th>
<th><bean:message key="colonne.libelle"/></th>
<th><bean:message key="colonne.quantite"/></th>
</tr>
</thead>
<tbody>
<logic:iterate id="elementCourse" name="LISTE_COURSES" type="com.developpez.rpouiller.monapplication.ElementCourseBean">
<tr>
<td><bean:write name="elementCourse" property="idObjet"/></td>
<td><bean:write name="elementCourse" property="libelle"/></td>
<td><bean:write name="elementCourse" property="quantite"/></td>
</tr>
</logic:iterate>
</tbody>
</table>IX-A-8. Modification de la JSP de suppression▲
Saisir le code suivant pour la JSP "suppression.jsp".
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>
<%@ taglib prefix="nested" uri="http://struts.apache.org/tags-nested" %>
<html:form action="/SupprimerSuppressionElementCourses.do">
<nested:hidden styleId="idobjet" property="idobjet"/>
<table border="1">
<thead>
<tr>
<th><bean:message key="colonne.identifiant"/></th>
<th><bean:message key="colonne.libelle"/></th>
<th><bean:message key="colonne.quantite"/></th>
<th> </th>
</tr>
</thead>
<tbody>
<logic:iterate id="elementCourse" name="LISTE_COURSES" type="com.developpez.rpouiller.monapplication.ElementCourseBean">
<tr>
<bean:define id="idObjet" name="elementCourse" property="idObjet"/>
<td><bean:write name="elementCourse" property="idObjet"/></td>
<td><bean:write name="elementCourse" property="libelle"/></td>
<td><bean:write name="elementCourse" property="quantite"/></td>
<td>
<a href="#" onclick="document.getElementById('idobjet').value = ${idObjet}; document.forms[0].submit();">
<bean:message key="suppression.supprimer.libelle" bundle="suppression"/>
</a>
</td>
</tr>
</logic:iterate>
</tbody>
</table>
</html:form>IX-A-9. Modification de la JSP de modification▲
Saisir le code suivant pour la JSP "modification.jsp".
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>
<%@ taglib prefix="nested" uri="http://struts.apache.org/tags-nested" %>
<b><i><html:errors/></i></b><br/>
<html:form action="/ModifierModificationListeCourses.do">
<table border="1">
<thead>
<tr>
<th><bean:message key="colonne.identifiant"/></th>
<th><bean:message key="colonne.libelle"/></th>
<th><bean:message key="colonne.quantite"/></th>
</tr>
</thead>
<tbody>
<nested:iterate id="elementCourse" property="listeCourses" type="com.developpez.rpouiller.monapplication.ModifElementCourseBean">
<tr>
<td>
<nested:write property="idObjet"/>
<nested:hidden property="idObjet"/>
</td>
<td>
<nested:write property="libelle"/>
<nested:hidden property="libelle"/>
</td>
<td>
<nested:text property="quantite"/>
</td>
</tr>
</nested:iterate>
</tbody>
</table>
<html:submit/>
</html:form>IX-A-10. Modification du fichier de configuration "struts-config.xml"▲
Modifier les forwards des actions dans le fichier "struts-config.xml" avec :
<!-- ========== Mapping des actions ============================== -->
<action-mappings>
<!-- Indique la correspondance entre une action sous forme d'URL (ici /AfficherListeCourses.do),
une classe (ici com.developpez.rpouiller.monapplication.AfficherListeCoursesAction) -->
<action path = "/AfficherListeCourses"
type = "com.developpez.rpouiller.monapplication.AfficherListeCoursesAction"
scope = "request">
<forward name="succes" path="page.affichage" />
<forward name="erreur" path="page.erreur" />
</action>
</action-mappings>IX-A-11. Modification du fichier de configuration "struts-config-creation.xml"▲
Modifier les forwards des actions dans le fichier "struts-config-creation.xml" avec :
<!-- ========== Mapping des actions ============================== -->
<action-mappings>
<action path = "/AfficherCreationElementCourses"
name = "creationForm"
type = "com.developpez.rpouiller.monapplication.AfficherListeCoursesAction"
scope = "request"
validate = "false"
attribute = "bean">
<forward name="succes" path="page.creation" />
<forward name="erreur" path="page.erreur" />
</action>
<action path = "/CreerCreationElementCourses"
name = "creationForm"
type = "com.developpez.rpouiller.monapplication.CreerElementCoursesAction"
scope = "request"
validate = "true"
attribute = "bean"
input = "/AfficherCreationElementCourses.do">
<forward name="succes" path="/AfficherCreationElementCourses.do" />
<forward name="erreur" path="page.erreur" />
</action>
</action-mappings>IX-A-12. Modification du fichier de configuration "struts-config-suppression.xml"▲
Modifier les forwards des actions dans le fichier "struts-config-suppression.xml" avec :
<!-- ========== Mapping des actions ============================== -->
<action-mappings>
<action path = "/AfficherSuppressionElementCourses"
name = "suppressionForm"
type = "com.developpez.rpouiller.monapplication.AfficherListeCoursesAction"
scope = "request"
validate = "false"
attribute = "bean">
<forward name="succes" path="page.suppression" />
<forward name="erreur" path="page.erreur" />
</action>
<action path = "/SupprimerSuppressionElementCourses"
name = "suppressionForm"
type = "com.developpez.rpouiller.monapplication.SupprimerElementCoursesAction"
scope = "request"
validate = "false"
attribute = "bean">
<forward name="succes" path="/AfficherSuppressionElementCourses.do" />
<forward name="erreur" path="page.erreur" />
</action>
</action-mappings>IX-A-13. Modification du fichier de configuration "struts-config-modification.xml"▲
Modifier les forwards des actions dans le fichier "struts-config-modification.xml" avec :
<!-- ========== Mapping des actions ============================== -->
<action-mappings>
<action path = "/AfficherModificationListeCourses"
name = "modificationForm"
type = "com.developpez.rpouiller.monapplication.AfficherModificationListeCoursesAction"
scope = "request"
validate = "false"
attribute = "bean">
<forward name="succes" path="page.modification" />
<forward name="erreur" path="page.erreur" />
</action>
<action path = "/ModifierModificationListeCourses"
name = "modificationForm"
type = "com.developpez.rpouiller.monapplication.ModifierModificationListeCoursesAction"
scope = "request"
validate = "true"
attribute = "bean"
input = "/pages/modification.jsp">
<forward name="succes" path="/AfficherModificationListeCourses.do" />
<forward name="erreur" path="page.erreur" />
</action>
</action-mappings>IX-A-14. Modification du fichier "web.xml"▲
Ajouter un paramètre d'initialisation à la servlet "org.apache.struts.action.ActionServlet" dans le fichier "struts-config-modification.xml" :
<init-param>
<param-name>chainConfig</param-name>
<param-value>org/apache/struts/tiles/chain-config.xml</param-value>
</init-param>IX-A-15. Déploiement de l'application▲
Si le serveur est à l'état "Restart" (Il faut qu'il soit à l'état "Synchronized") : Sélectionner le serveur Tomcat dans la vue "Servers". Faire un clic droit sur le serveur Tomcat. Puis sélectionner "Restart".
Ouvrir un navigateur web à l'adresse : http://localhost:8080/MonApplication/AfficherListeCourses.do.
IX-A-16. Vérification▲
IX-B. Fonctionnement de l'ensemble▲
Au démarrage de l'application, la modification du fichier "web.xml" indique que la servlet "org.apache.struts.action.ActionServlet" est doit également gérer des tiles.
Le fichier "struts-config.xml" déclare le plugin de gestion des tiles avec son fichier de configuration.
Le fichier "tiles-defs.xml" déclare les tiles : la JSP squelette "page.jsp" qui comporte le menu et les différents tiles (affichage, création, suppression, modification et erreur). Le tag "tiles:insert" contenu dans "pages.jsp" sera remplacé par le contenu de la JSP définie pour chaque tile dans le fichier "tiles-defs.xml".
Lors de l'appel "http://localhost:8080/MonApplication/AfficherListeCourses.do", tout se déroule comme précédemment, sauf lors du forwarde "succes" ou "erreur". Les forwards sont changés vers des tiles, afin d'obtenir les pages avec le menu commun à toutes les pages.









