struts2 的 s:include 标签在引入其他页面的时候,如果使用param标签,框架不会将里面的变量赋值入valueStack,这样的话,也就没有办法通过<s:property/>在引入的页面中获取相应的变量了。
有一种变通的方法,可以在所引入的页面中用scriptlet强行set参数。
偶尔路过……

解决方案 »

  1.   

    这个问题我也碰到过:
           我是用以下方法解决的:<jsp:include page="/jsp/common/page.jsp">
        <jsp:param name="actionName"
    value="shrqsdj!queryOrder.do?itemId=${itemId}"/>

    </jsp:include>在另外一个页面可以这样取:<a href="<%=request.getParameter("actionName")%>&pageNo=1"
    class="pagenav">首页</a>
      

  2.   

    <%@ page contentType="text/html; charset=gb2312" import="java.util.*" language="java" %>
    <%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>include示例</title>
    </head>
    <body>
    <h3>包含TestIncluded页面并传递参数</h3>
    <s:include value="TestIncluded.jsp">
    <s:param name="name" value="'xiaoqiang'"></s:param>
    <s:param name="age" value="'20'"></s:param>
    </s:include>
    </body>
    </html><%@ page contentType="text/html; charset=gb2312" import="java.util.*" language="java" %>
    <%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>111</title>
    </head>
    <body>
    name:${param.name }<br/>
    age:${param.age }
    </body>
    </html>
      

  3.   

    <s:include value="TestIncluded.jsp">
    <s:param name="name" value="'xiaoqiang'"></s:param>
    <s:param name="age" value="'20'"></s:param>
    </s:include>name:${param.name }<br/>
    age:${param.age }
      

  4.   


    这个取不到值吧?
    在jsp页面还是原样输出啊?
    ${param.name }
      

  5.   

    我在包含的页面加了这个:
    <s:set id="index" name="index" scope="session">5</s:set>然后在被包含页面用这个取值
    #session.index
    可以取到
      

  6.   

    a.jsp中用<s:include value="b.jsp">会把b.jsp包含进来,用param标签是用来把一个参数传递给包含着它的那个标签。此时用${param.name}是可以在a页面看到值的,楼主是不是想在b页面看到值呢?干嘛要在b页面看值,它已经被包含在a中了。
      

  7.   

    使用s:include这个用法有点特殊,我是这样实现的传参的
    仅供参考学习
    test1.jsp<s:include value="documentShowing.jsp">
    <s:param name="docId"><s:property value="#document.id"/> </s:param>
    </s:include>test2.jsp文档ID号:<%=request.getParameter("docId")%>就如你们所见,我在页面test1中使用了s:param但是我在页面test2取参数必须使用<%%>这种取法,不然取不到数值,我试了使用<s:property value="docId">取参,但取不到....
      

  8.   

    4楼发的是正确的,如果你们试验失败,要注意其中2行<s:param name="name" value="'xiaoqiang'"></s:param>
    <s:param name="age" value="'20'"></s:param>这个VALUE 赋值的不是字符串而是对象 value="'xiaoqiang'"
    赋值字符串的后台会报错 不仔细看 看不出,或者这样写<s:param name="name" value="#xiaoqiang"></s:param>
    xiaoqiang为一个变量 ,在其它地方定义