IV. Exemple 03 - Les clés de navigation▲
IV-A. Le projet Netbeans▲
- 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 :
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 :
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
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
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▲
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 :