主页面用<s:param>传的参数,子页面无法用struts2的标签获取到参数
<s:property value="#request.operation"/>
或是<s:property value="operation"/>
或是<s:property value="%{#attr.operation}"/>
均获取不到值,
网上找了一个哥们的原文:
解释如下:
看了Struts2的文档,说是由于include不会更新valueStack的缘故,所以ognl无法从valueStack中获取。同时文档介绍使用jstl可以在页面中获取:
${param.operation}
但是本人为了整站的统一,不希望struts标签和jstl标签的混用,所以希望只能struts2解决,根据那个哥们的文章,解决办法如下:
在父页面传入参数:
<s:include value="/jsp/include_vedio/head.jsp" > <%-- 把页面的title传进去 --%> <s:param name="page_title">修改页面title</s:param> </s:include>
在子页面中加入以下代码
<%@page import="com.opensymphony.xwork2.ognl.OgnlValueStack"%> <% ((OgnlValueStack) request.getAttribute("struts.valueStack")).set( "page_title", request.getParameter("page_title")); %> <s:if test="page_title != null"><s:property escape="false" value="page_title" /> - 网站</s:if><s:else>网站</s:else>
然后就可以用struts2标签<s:property value/>去获取值了
原文来自:http://wenku.baidu.com/view/b23a4e26aaea998fcc220eef.html
感谢原作者。本文在原文的基础上整理了一下