IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Introduction à STRUTS2 par l'exemple


précédentsommairesuivant

IV. Exemple 03 - Les clés de navigation

IV-A. Le projet Netbeans

Image non disponible
  • en [1] :
    • [web.xml] : le fichier de configuration de l'application web
    • [struts.xml] : le fichier de configuration de Struts
    • [Action1.java] : l'unique action de l'application
    • [Page1.jsp, Page2.jsp] : les deux vues de l'application
  • en [2] : affichage de [Page1.jsp]
  • en [3] : affichage de [Page2.jsp]

IV-B. Le fichier [struts.xml]

C'est le suivant :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
  <package name="default" namespace="/" extends="struts-default">
    <default-action-ref name="index" />
    <action name="index">
      <result type="redirectAction">
        <param name="actionName">Action1</param>
        <param name="namespace">/actions</param>
      </result>
    </action>
  </package>
  <package name="actions" namespace="/actions" extends="struts-default">
    <action name="Action1" class="actions.Action1">
      <result name="page1">/vues/Page1.jsp</result>
      <result name="page2">/vues/Page2.jsp</result>
    </action>
  </package>
</struts>
  • lignes 17-19 : la méthode execute de [Action1] va rendre deux clés de navigation :
    • page1 qui fera afficher la vue /vues/Page1.jsp
    • page2 qui fera afficher la vue /vues/Page2.jsp

IV-C. L'action [Action1]

Elle est analogue à celle de l'exemple précédent :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
package actions;

import com.opensymphony.xwork2.ActionSupport;

public class Action1 extends ActionSupport{
  
  // modèle de l'action
  private String param1="valeur1";
  private String param2="valeur2";
  
  @Override
  public String execute(){
    // choix aléatoire entre deux vues
    int i=(int)(Math.random()*2);
    if(i==0){
      return "page1";
    }else{
      return "page2";
    }
  }
  
  // getters et setters
...
}
  • lignes 12-14 : la méthode execute rend de façon aléatoire les clés page1 et page2 attendues.

IV-D. Les vues Jsp

Page1.jsp

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Page1</title>
  </head>
  <body>
    <h1>Page1</h1>
    param1=<s:property value="param1"/><br/>
  </body>
</html>

Ligne 11, la page affiche la valeur du champ param1 de [Action1].

Page2.jsp

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Page2</title>
  </head>
  <body>
    <h1>Page2</h1>
    param2=<s:property value="param2"/><br/>
  </body>
</html>

Ligne 11, la page affiche la valeur du champ param2 de [Action1].

IV-E. Les tests

Image non disponible

Une fois l'une des pages dans le navigateur, il faut la rafraîchir (F5) pour exécuter de façon répétée l'action [Action1] jusqu'à avoir l'autre page. On peut également passer des paramètres :

Image non disponible

précédentsommairesuivant

Licence Creative Commons
Le contenu de cet article est rédigé par Serge Tahe et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé.
Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright © 2012 Developpez.com.