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 courses
IX-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▲
Lorsque l'on clique sur les différents liens du menu, on obtient les différents écrans de l'application.
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.