3 votes

La balise d'ancrage de Struts2 n'inclut pas contextPath

%{#request.contextPath} ne fonctionne pas à l'intérieur d'une balise s:a dans Struts2 (Struts 2.2.1 pour être précis). Y a-t-il un moyen de le faire fonctionner ? Il fonctionne dans d'autres balises Struts2.

Voici deux lignes dans un fichier JSP d'un projet Struts 2 dont le chemin du contexte est "/websites" :

<s:a href="%{#request.contextPath}/clickme" theme="simple">Click here.</s:a>
<s:form method="post" action="%{#request.contextPath}/submitme" theme="simple"></s:form>

Et voici le résultat :

<a href="stackoverflow.com/clickme">Click here.</a>
<form id="submitme" name="submitme" action="/websites/submitme" method="post"></form>

Remarquez que le chemin d'accès au contexte n'apparaît pas dans l'ancre mais est inclus dans le formulaire.

P.S. Je ne peux pas utiliser ${#pageContext.request.contextPath} ici parce que ${} n'est pas autorisé dans les balises Struts2. De plus, j'essaie d'être cohérent. Et j'essaie aussi, de manière générale, d'éviter ${} puisqu'il n'y a pas d'échappement automatique de la sortie.

Merci !

1voto

Buhake Sindi Points 38654

Est-ce que Struts 2 supporte EL ?

Vous pouvez utiliser ${request.contextPath} si c'est le cas....

1voto

Keats Points 8938

Cela devrait fonctionner :

<s:set id="contextPath"  value="#request.get('javax.servlet.forward.context_path')" />
<s:a href="%{contextPath}/clickme" theme="simple">Click here.</s:a>

Cependant, vous n'êtes pas censé faire ça. Lorsque vous avez besoin d'une url, utilisez la fonction <s:url> étiquette :

<%-- Without specifying an action --%>
<s:url id="myUrl" value="clickme" />
<s:a href="%{myUrl}" theme="simple">Click here.</s:a>

<%-- With an action --%>
<s:url id="myUrl" action="clickme" />
<s:a href="%{myUrl}" theme="simple">Click here.</s:a>

À propos, vous n'avez pas besoin d'un chemin contextuel pour l'attribut action d'un formulaire :

<s:form method="post" action="submitme" theme="simple"></s:form>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X