如果a.action产生一个list,然后跳转到b.action,b又产生一个list然后跳转到c页面,请问我如何能在C页面取到这两个action中的list?

解决方案 »

  1.   

    每次请求,action都被加载到valueStack中,你可以通过ActionContext得到这个valuestack,根据findValue()方法获取你想要得到的值,查找值会从栈顶开始找。
    如果不是action的属性,如果你通过ActionContext的put方法保存了这个list,那么你也可以通过OGNL
    表达式获取ONGL Context上下文来获取保存的list
      

  2.   

    a.action和b.action的list为何不放到一个action里面呢
    比如说List claList = classesService.findAll();
    List stuList = studentService.findAll();
    ActionContext.getContext().put("stuList", stuList);
    ActionContext.getContext().put("claList ", claList );
    return "c";页面用</s:iterator>标签<s:iterator value="stuList" status="stu">
    </s:iterator>
    <s:iterator value="claList " status="cla">
    </s:iterator>
      

  3.   

    <result name="resultName" type="chain">/路径</result> 
    type类型用chain就行了
      

  4.   

    ServletActionContext.getRequest().setAttribute("alist",alist);
    到b里取出来再放一个request里.
    然后到c里取出两个
      

  5.   

    每次请求,action都被加载到valueStack中,你可以通过ActionContext得到这个valuestack,根据findValue()方法获取你想要得到的值,查找值会从栈顶开始找。 
    如果不是action的属性,如果你通过ActionContext的put方法保存了这个list,那么你也可以通过OGNL 
    表达式获取ONGL Context上下文来获取保存的list 
      

  6.   

    是的,后一个action是可以取得前一个actin里面的所有的参数的,可以考虑在b.action里面设置一个list参数来来保持a.action传递过来的list,c做同样处理。
      

  7.   

      首先你不可能通过<result name="xxx" type="redirectAction">Actionname来实现Action的传参,
    因为redirectAction是进行一次新的请求,会替代前一个Action被压入栈顶。
      你只能通过<result name="xxx" type="chain">Actionname跳转,才能进行将前一个Action的值保存到ValueStack中,而下一个Action是可以访问到两个Action的属性,默认是从栈顶开始找的,如果你要输出位于栈顶下面的Action属性,需要使用OGNL标签,[1].arribute来访问。但是注意当前Action不能实现Unchainable接口,要不拦截器会忽略这个Action
      

  8.   

    第一action返回到一个jsp,什么都不做,取到list(最好用hidden),然后再提交到第二action,取到第一list,和第二list一起返回到最终要显示的jsp。搞定。
      

  9.   

    我写成这样了好像还不行,有没有其它要注意的地方?我的配置如下:
    </action>
    <action name="emptaction" class="empt">
    <result name="findAll">/emptList.jsp</result>
    <result name="findById">/emptList.jsp</result>
    <result name="modify"  type="chain">dempaction!findAll.action</result>
    </action>
    <action name="dempaction" class="demp" method="findAll">
    <result name="findAll">/EmptModify.jsp</result>
    </action>
      

  10.   

    我改成chain了页面会报这个错
    HTTP Status 404 - There is no Action mapped for namespace / and action name dempaction!findAll.action.
    怎么会事呢?
      

  11.   

    你的<result name="modify"  type="chain">dempaction!findAll.action </result>这里的actionName写错了,不要后面的!
      

  12.   

    哦,谢谢,我看还是不用这种方法了,直接在一个action中注入两个service,然后返回两个list到页面搞定