Struts2.0跳转问题 如果a.action产生一个list,然后跳转到b.action,b又产生一个list然后跳转到c页面,请问我如何能在C页面取到这两个action中的list? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 每次请求,action都被加载到valueStack中,你可以通过ActionContext得到这个valuestack,根据findValue()方法获取你想要得到的值,查找值会从栈顶开始找。如果不是action的属性,如果你通过ActionContext的put方法保存了这个list,那么你也可以通过OGNL表达式获取ONGL Context上下文来获取保存的list 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> <result name="resultName" type="chain">/路径</result> type类型用chain就行了 ServletActionContext.getRequest().setAttribute("alist",alist);到b里取出来再放一个request里.然后到c里取出两个 每次请求,action都被加载到valueStack中,你可以通过ActionContext得到这个valuestack,根据findValue()方法获取你想要得到的值,查找值会从栈顶开始找。 如果不是action的属性,如果你通过ActionContext的put方法保存了这个list,那么你也可以通过OGNL 表达式获取ONGL Context上下文来获取保存的list 是的,后一个action是可以取得前一个actin里面的所有的参数的,可以考虑在b.action里面设置一个list参数来来保持a.action传递过来的list,c做同样处理。 首先你不可能通过<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 第一action返回到一个jsp,什么都不做,取到list(最好用hidden),然后再提交到第二action,取到第一list,和第二list一起返回到最终要显示的jsp。搞定。 我写成这样了好像还不行,有没有其它要注意的地方?我的配置如下:</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> 我改成chain了页面会报这个错HTTP Status 404 - There is no Action mapped for namespace / and action name dempaction!findAll.action.怎么会事呢? 你的<result name="modify" type="chain">dempaction!findAll.action </result>这里的actionName写错了,不要后面的! 哦,谢谢,我看还是不用这种方法了,直接在一个action中注入两个service,然后返回两个list到页面搞定 分层的困惑。写多了才发现,我把业务逻辑写action里面了,求解决方案 hibernate原生sql语句的疑惑 一道Java填空题 JFreeChart 1.0.9细节问题 五一散分了??? 关于java中的三元运算符 java web 程序的工作原理 类的调用问题,对付大量代码中数据库连接未及时释放的代码维护问题 请问:用axis发布WebService,如何返回两个以上的值? 求教,hibernate 问题 分配内存的问题 难住了 请教高手 简单问题(网页播放器)+第一次散分
如果不是action的属性,如果你通过ActionContext的put方法保存了这个list,那么你也可以通过OGNL
表达式获取ONGL Context上下文来获取保存的list
比如说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>
type类型用chain就行了
到b里取出来再放一个request里.
然后到c里取出两个
如果不是action的属性,如果你通过ActionContext的put方法保存了这个list,那么你也可以通过OGNL
表达式获取ONGL Context上下文来获取保存的list
因为redirectAction是进行一次新的请求,会替代前一个Action被压入栈顶。
你只能通过<result name="xxx" type="chain">Actionname跳转,才能进行将前一个Action的值保存到ValueStack中,而下一个Action是可以访问到两个Action的属性,默认是从栈顶开始找的,如果你要输出位于栈顶下面的Action属性,需要使用OGNL标签,[1].arribute来访问。但是注意当前Action不能实现Unchainable接口,要不拦截器会忽略这个Action
</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>
HTTP Status 404 - There is no Action mapped for namespace / and action name dempaction!findAll.action.
怎么会事呢?