首頁面用<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
感謝原作者。本文在原文的基礎上整理了一下