Struts2: как читать параметры из ‹jsp:include›

Когда я включаю JSP либо по <jsp:include />, либо указываю параметры - они прекрасно доступны для EL ${param.XXX}, но не для OGNL %{#parameters.XXX}.

Например:

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

и во фрагменте.jsp

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

ЗАЧЕМ ??? Что мне следует использовать вместо тегов Struts?

Примечание: с <s:include/> вместо <jsp:include/> параметр недоступен даже с EL.


person Pavlo    schedule 24.12.2009    source источник
comment
stackoverflow.com/q/13762054/1700321   -  person Aleksandr M    schedule 17.10.2013


Ответы (4)


Вот что я делаю, чтобы решить проблему:

В том числе страницы:

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

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

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

Я надеюсь, что это работает для вас!

person Joakim N    schedule 09.08.2011

Недавно я столкнулся с этой проблемой. Я обнаружил, что причина в том, что параметры в <s:include> не хранятся в объекте request.parameters ActionContext, а хранятся в HttpServletRequest страницы JSP. Таким образом, параметры можно получить через EL(${param.xxx}) или <% request.getParameters("xxxx") %>, но мы не можем получить их через (struts) ongl. Поскольку параметры отсутствуют в файле ActionContext.

Если вы настаиваете на использовании ongl, вы можете добавить параметры в ActionContext через jsp <% %> или EL, а затем получить параметры через ongl.

person wenlele    schedule 06.03.2012

http://prodia.co.uk/blog/doahh/entry/struts2_s_include_and_passing

person Nate    schedule 25.12.2009
comment
Да, я делаю что-то подобное на включенной странице, ‹c:set var=localCopyOfParam value=${param.realParam}/› ... ‹s:anytag value=#attr.localCopyOfParam/›, но это не глупо. Это? - person Pavlo; 13.01.2010
comment
Если вы выберете taglib struts, вы должны сделать это следующим образом: | ‹s:set var=localCopyOfParamAjax›${param.ajax}‹/s:set› - person David Canós; 05.05.2014

Попробуйте следующее.

<s:property value="%{#parameters['paramName']}"></s:property>
person MohanaRao SV    schedule 15.11.2012