struts2 标签 获取s:param的值 子页面获取 s:include s:param的值

主页面用<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

感谢原作者。本文在原文的基础上整理了一下


你可能感兴趣的:(struts,文档,import,include)