2010-10-18 3 views
3

%{#request.contextPath} ne fonctionne pas dans une balise s: a dans Struts2. (Struts 2.2.1 pour être précis.) Y at-il un moyen de le faire fonctionner? Cela fonctionne dans d'autres étiquettes de Struts2.La balise d'ancrage Struts2 n'inclut pas contextPath

Voici deux lignes dans un fichier JSP dans un projet Struts 2 dont le chemin contexte est «/sites »:

<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 la sortie:

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

Notez que le contexte Le chemin est laissé sur 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. D'ailleurs, j'essaie d'être cohérent. Et j'essaie aussi généralement d'éviter ${} car il n'échappe pas automatiquement à la sortie.

Merci!

+1

Je ne fais pas Struts2 , mais j'ai jeté un rapide coup d'oeil dans leurs docs, n'est-ce pas le ['s: url'] (http://struts.apache.org/2.x/docs/url.html) de quoi avez-vous besoin? – BalusC

Répondre

1

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é le faire. Lorsque vous avez besoin d'une URL, utilisez la balise <s:url>:

<%-- 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> 

Par ailleurs, vous n'avez pas besoin d'un chemin de contexte pour l'attribut d'action d'une forme:

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

Merci. J'avais essayé '' sans succès mais je n'avais pas essayé votre version. Mais à la fin, j'ai utilisé '' comme ceci: '"Click here' Également utilisé un paramètre global pour définir l'attribut 'includeParams' à" none "par défaut. –

1

Est-ce que Struts 2 prend en charge EL?

Vous pouvez utiliser ${request.contextPath} si elle fait ....

+0

Les balises Struts utilisent des expressions OGNL – KeatsPeeks

+0

AAah, ok ... JSP 2.0 supporte EL, donc l'OP peut l'utiliser avec sa balise Struts 2 (ou pas?). Je me souviens clairement d'utiliser EL avec Struts 1.3.6 et plus haut .... –

+0

Je l'ai mentionné dans le P.S. une partie de la question que je ne peux pas utiliser la syntaxe '$ {}' dans une balise Struts 2 et que j'ai tendance à l'éviter parce qu'elle n'échappe pas automatiquement à la sortie. –

Questions connexes