2009-12-24 4 views
4

Lorsque j'inclue une JSP, soit par <jsp:include /> et spécifiez les paramètres - ils sont parfaitement accessibles par EL ${param.XXX} mais pas par OGNL %{#parameters.XXX}.Struts2: Comment lire les paramètres de <jsp:include>

Par exemple:

<jsp:include page="fragment.jsp"> 
    <jsp:param value="foo" name="bar" /> 
</jsp:include> 

et fragment.jsp

value of foo in EL : ${param.bar} 
value of foo in OGNL : <s:property value="%{#parameters.bar}" /> 

POURQUOI ??? Que devrais-je utiliser à la place dans Struts Tags?

Remarque: avec <s:include/> au lieu de <jsp:include/>, le paramètre n'est pas accessible même avec EL.

+0

http://stackoverflow.com/q/13762054/1700321 –

Répondre

3

C'est ce que je fais pour résoudre le problème:

En incluant la page:

<s:set name="searchName" value="my search term" /> 
<jsp:include page="/WEB-INF/page/whatever.jsp" /> 

En /WEB-INF/page/whatever.jsp:

Your searchTerm is <s:property value="#searchName" /> 

J'espère que cela fonctionne pour vous!

2

J'ai récemment rencontré ce problème. J'ai trouvé la raison est que les paramètres dans <s:include> ne sont pas stockés dans l'objet request.parameters de ActionContext, mais stockés dans HttpServletRequest de la page JSP. Donc, les paramètres peuvent être obtenus par EL(${param.xxx}) ou <% request.getParameters("xxxx") %>, mais nous ne pouvons pas passer à travers (struts) ongl. Parce que les paramètres ne sont pas dans le ActionContext.

Si vous insistez sur l'utilisation du ONGL, vous pouvez ajouter les paramètres dans ActionContext par jsp <% %> ou EL et vous pouvez obtenir les paramètres par ONGL.

-2

Essayez les solutions suivantes.

<s:property value="%{#parameters['paramName']}"></s:property> 
+0

pas la réponse à la question .. juste le code –

Questions connexes