Problème conc. <html:link> dans Struts
Développée à l'origine en JSP, tous les appels de mon application MVC se passent bien. Simplifié : J'ai une <frameset> qui sert de page de base et qui contient à gauche (SurfInfGau) un menu dont les items sont tous des hyperliens appelant des pages devant figurer dans la partie de droite = centrale (SurfInfCent).
Code:
1 2 3 4 5
|
<frameset>
<frame src="Vues/MC_InfGau_1.jsp" name="SurfInfGau" id="SurfInfGau" />
<frame src="Vues/MC_InfCen_01.jsp" name="SurfInfCent" id="SurfInfCent" />
</frameset> |
Lorsque je transforme mes pages en Struts, en guise d'exercice pour l'apprendre, l'un des problèmes qui surgissent est le suivant : Au démarrage, je n'obtiens plus le menu (gauche), alors que j'obtiens bien la première page (droite).
Remarque 1: La page de base est la seule dont les appels du menu (MC_InfGau_1.jsp) et de la première page à afficher (MC_InfCen_01.jsp) restent en JSP. Donc à part la page de base, toutes mes pages JSP contiennent au début la directive :
Code:
1 2
|
<%@ taglib prefix="html" uri="WEB-INF/struts-html.tld" %> |
Je n'ai aucun problème si le code de la page 'MC_InfGau_1.jsp' contient :
Code:
1 2
|
<li><a href="MC_InfCen_02.jsp">Marques de véhicules</a></li> |
Si je substitue le code html d'un seul des liens du menu par l'équivalent Struts (balise définie dans 'struts-html.tld')
Code:
1 2
|
<li><html:link page="/MC_InfCen_02.do" >Marques de véhicules</html:link></li> |
, une erreur apparaît :
Citation:
... Exception in JSP: /Vues/MC_InfGau_1.jsp:19
...
19: <li><html:link page="/MC_InfCen_02.do" >
...
cause mère : java.lang.NullPointerException
Remarque 2:
- A part le fichier JSP de base, tous les autres se trouvent bien dans le répertoire 'Web Pages/Vues'.
Or nous savons que la balise '<html:link>' génère un lien pointant sur '/C/page', où ...
- 'C' est le contexte de l'application : 'Véhic'
- 'page' est l'URL indiquée dans l'attribut 'page' de la balise.
Le but à atteindre est qu'à partir du code de la page 'Vues/MC_InfGau_1.jsp', Struts génère en fait :
Code:
1 2
|
<li><a href="/Véhic/Web Pages/Vues/MC_InfCen_02.do">Marques de véhicules</a></li> |
, faisant ainsi appel à struts-config.xml qui contient l'élément 'action' appelant 'MC_InfCen_02.jsp'.
Question principale de cette session :
Comment encoder correctement l'URL de la page à appeler dans
Code:
1 2
|
<li><html:link page="/MC_InfCen_02.jsp" >Marques de véhicules</html:link></li> |
pour qu'il n'y ait plus d'erreur et que le menu '/Vues/MC_InfGau_1.jsp' apparaisse comme il se doit et sache appeler la page 'MC_InfCen_02.jsp' ?
Remarques 3:
- Les fichiers 'web.xml', 'struts-config.xml' et 'struts-html.tld' se trouvent bien dans le répertoire 'Web Pages/WEB-INF'.
- Le fichier 'web-xml' contient bien le <servlet> et le <servlet-mapping> qu'il faut pour utiliser l'action 'ActionServlet'.
- Le fichier 'struts-config.xml' contient
Code:
1 2 3 4 5 6 7
|
<action-mappings>
<action path="/MC_InfCen_02"
type="org.apache.struts.actions.ForwardAction"
parameter="/Vues/MC_InfCen_02.jsp"
/>
... |
pour le cas où les <form> ou bien URLs d'autres pages (à figurer dans la partie de droite) devraient aussi pouvoir appeler cette page '/Vues/MC_InfCen_02.jsp'.
Mon environnement de développement :
Code:
1 2 3 4 5 6
|
- IDE NetBeans 6.1
- Serveur Tomcat 5.0
- JSP
- JSTL 1.1
- Java JDK 1.6.0_07 |
Y a-t-il une âme illuminée ? Merci bcp d'avance.