Application Struts pas à pas avec Eclipse (Web Tools Platform) et Tomcat

Struts


précédentsommairesuivant

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".

 
Sélectionnez
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 :

 
Sélectionnez
<%@ 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 :

 
Sélectionnez
<?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 :

 
Sélectionnez
  <!-- ========== Tiles =========================== -->
  <plug-in className="org.apache.struts.tiles.TilesPlugin">
    <set-property property="definitions-config"
    			value="/WEB-INF/tiles-defs.xml" />
  </plug-in>
Image non disponible

IX-A-5. Modification de la JSP d'erreur

Saisir le code suivant pour la JSP "erreur.jsp".

 
Sélectionnez
<%@ 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".

 
Sélectionnez
<%@ 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".

 
Sélectionnez
<%@ 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".

 
Sélectionnez
<%@ 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>&nbsp;</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".

 
Sélectionnez
<%@ 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 :

 
Sélectionnez
  <!-- ========== 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 :

 
Sélectionnez
  <!-- ========== 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 :

 
Sélectionnez
  <!-- ========== 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 :

 
Sélectionnez
  <!-- ========== 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" :

 
Sélectionnez
		<init-param>
			<param-name>chainConfig</param-name>
			<param-value>org/apache/struts/tiles/chain-config.xml</param-value>
		</init-param>
Image non disponible

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".

Image non disponible

Ouvrir un navigateur web à l'adresse : http://localhost:8080/MonApplication/AfficherListeCourses.do.

Image non disponible

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.

Image non disponible
Image non disponible
Image non disponible

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.


précédentsommairesuivant

  

Copyright © 2008 Régis POUILLER. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.