struts2从一个action 跳到另一个action 居然没法拿到request 中的值,怎么这么弱智呢。 哪题。从一个action 的方法 直接到到另一个方法。requets的值就接收不到了。直无耐。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你是用的什么方式跳转的,如果是重定向不是同一个request。 那到跳到另一个action 它都是重定向的 <result name=".."><param name="namespace">这里填命名空间</param><param name="actionName">这里填action名</param><param name="id">${id}</param><param name="你想传的值的name">你想传的值的值</param></result>如果想用原action里的值需要用${},并需要在原action里提供getter,在新action(要重定向到的action)中提供setter。 Struts这方面是最强的了。你还是不太会用 如果个值是在第一个action里产生的,那就在第一个action里设置一个request.setAttribute(xx,xx);在第二个action里使用request.getAttribute(xx);而且配置文件里不要配置成二次跳转.<action .....> <forward name="success" path="xxx.do" redirect="false"/> </action> 其实 可以放 session里啊 1.<result type="redirectAction"></result>:所有的请求参数和请求结果都丢失。2.<result type="chain"></result>:请求参数和请求结果不会丢失。 在struts 2的配置文件,action元素中type属性有个指定是专门调用action用的,好像是“redirect-actioin”具体的记不清了。晚上回去我再查查!这样acton调用action的时候就可以用request对象了还有一种方法就是直接在action代码中直接调用另外一个action----不推荐使用这种方法 楼主检查下代码吧,struts2除了标签有点问题以外,其他的还是很强大的。 response.sendRedirect("documentSortRightTable!findSalm.action"); 不要在action中的方法存值,在action中存,试试 放入form中,然后通过request.getAttribute("name")就可以拿到了 在提交表单的时候把值放在表单内例如提交到save方法 在save方法里面不用拿值在sava方法后面直接返回到另外一个方法在另一个方法里面直接用reqeust.getParameter()方法获得就可以了之前我们做修改之后能返回当前页都是这么做的楼主如果有不明白的地方可以找我要代码 我也遇到过这样的问题了,最后是private Map request的set方法写错了,自动生成错了,我把它的set方法改成了(Map request){this.request=request;} 这样就好了 struts2的form还是挺强大的,虽然别的地方有不如struts1的,不向下兼容比较郁闷 楼主只是你对Struts2 了解太少了。目前只发现Struts2.0.14 版本有中文问题 其他的没发现什么<result name=".."><param name="namespace">这里填命名空间 </param><param name="actionName">这里填action名 </param><param name="id">${id} </param><param name="你想传的值的name">你想传的值的值 </param></result> 引用楼上的。 楼主可以试一下放入form中,然后通过request.getAttribute如果不行,得看看用什么方式跳转了 都跳了这么多地方你,你还能找得到来时的路莫!request都跳了好几次了,还怎么取! 先不说action之间的跳转为什么不能取到request中的值,经验告诉我,在当前流行的MVC的开发模式中,action作为Model层,不同的action之间是不应该相互联系的,理论上是应该一个action负责一块业务,为什么要相互跳转呢?然后再说action跳转的问题,我记得是可以通过struts配置文件来实现跳转的吧?具体不太清楚了,因为现在的项目没有用到struts。可以去 网上查查 “struts2从一个action 跳到另一个action”不知道你是不是使用的forward()方法,理论上使用这个方法是不会取不到值的。如果你使用的是这个没取到值的话,看看是不是其它地方出的问题。 用request跳转啦!request作用域会带参数过去 放到FORM里 用 GETTER SETTER 就解决了 应该有很多种方法:1.把你要的值传到session中。2. --6楼的<result name=".."><param name="namespace">这里填命名空间 </param><param name="actionName">这里填action名 </param><param name="id">${id} </param><param name="你想传的值的name">你想传的值的值 </param></result>如果想用原action里的值需要用${},并需要在原action里提供getter,在新action(要重定向到的action)中提供setter。3.ActionContext ctx = ActionContext.getContext(); ctx.put("name","你要传的值!!");4.在页面form中: <form method="post" action="<s:url value="myaction.action?id=%{#request.id}" encode="iso-8859-1" />" > </form>应该够你用了吧? 再原action中设定一个属性,并给该属性设定get和set方法。然后在struts.xml中用el传值。如:action中有一个name属性,已经设定了get和set方法。在struts.xml中的设置如下<result name="update" type="redirectAction"> <param name="actionName">update</param> <param name="name">${name}</param> </result>在转向后的action中就可以用String idStr = ServletActionContext.getRequest().getParameter("name");方式取值。当然也有其他的方法。你也可以参考官方文档如:http://struts.apache.org/2.0.12/docs/parameters-in-configuration-results.html action中值的传递我经常使用2个方法:1.ActionContext 对象 2.使用Spring 管理 <result name="success" type="chain">action名</result> 这样就可以了 用session 应该可以举个列子你在一个Action里面保存了Arraylist对象,当你在另一个Action里面要用到此对象是,你可以用request.getSession().getAttribute("");获取此对象. n种方法。即使redirect action也是可以传递的,可以在属性里用param传递。 lz的信息提供的过于简单了吧?主要还是 redirect 和 forward 的区别 <action name="affUpdate" class="afficheUpdateAction"> <result type="redirectAction"> <param name="actionName">affBackManage.action</param> <param name="curPage">${curPage}</param> <param name="id">${id}</param> <param name="updateInfo">${updateInfo}</param> </result></action>param里除了actionName是你要跳转的路径,剩下的都是你可以自己添加或删减的参数,最终跳转到affBackManage.action?curPage=..&id=..&updateInfo=.. 两个不同的request对象,你怎么可能拿到值呢。 那是两个不同的request怎么能取到值呢。 重定向的时候,把paramater丢了吧,所以request不到的 跳转到action的。redirectAction是重定向,chain是转发。。 简单的java Graphics 问题 Ø此拉丁字符+数字如何从execl完整读取 JBoos EJB 问题 请求帮助java.lang.NullPointerException hibernate级联更新偶尔锁表的问题 学习Spring该怎样做? Struts 2 问题 tomcat 启动出错。 web.xml 配置问题。 Java获取共享文件创建时间????? 怎样实现两个下拉列表 请问!JBUILDER X下配置struts1.1的DataSource数据源详细配置方法 求web版 高校运动会管理系统,感激不尽! 求des加密高手指点
那到跳到另一个action 它都是重定向的
<param name="namespace">这里填命名空间</param>
<param name="actionName">这里填action名</param>
<param name="id">${id}</param>
<param name="你想传的值的name">你想传的值的值</param>
</result>
如果想用原action里的值需要用${},并需要在原action里提供getter,在新action(要重定向到的action)中提供setter。
<action .....>
<forward name="success" path="xxx.do" redirect="false"/>
</action>
里啊
楼主检查下代码吧,struts2除了标签有点问题以外,其他的还是很强大的。
例如提交到save方法 在save方法里面不用拿值
在sava方法后面直接返回到另外一个方法
在另一个方法里面直接用reqeust.getParameter()方法获得就可以了
之前我们做修改之后能返回当前页都是这么做的
楼主如果有不明白的地方可以找我要代码
this.request=request;
}
这样就好了
<result name="..">
<param name="namespace">这里填命名空间 </param>
<param name="actionName">这里填action名 </param>
<param name="id">${id} </param>
<param name="你想传的值的name">你想传的值的值 </param>
</result>
引用楼上的。
如果不行,得看看用什么方式跳转了
request都跳了好几次了,还怎么取!
在当前流行的MVC的开发模式中,action作为Model层,不同的action之间是不应该相互联系的,理论上是应该一个action负责一块业务,为什么要相互跳转呢?然后再说action跳转的问题,我记得是可以通过struts配置文件来实现跳转的吧?具体不太清楚了,因为现在的项目没有用到struts。可以去 网上查查
不知道你是不是使用的forward()方法,理论上使用这个方法是不会取不到值的。
如果你使用的是这个没取到值的话,看看是不是其它地方出的问题。
1.把你要的值传到session中。
2. --6楼的
<result name="..">
<param name="namespace">这里填命名空间 </param>
<param name="actionName">这里填action名 </param>
<param name="id">${id} </param>
<param name="你想传的值的name">你想传的值的值 </param>
</result>
如果想用原action里的值需要用${},并需要在原action里提供getter,在新action(要重定向到的action)中提供setter。
3.ActionContext ctx = ActionContext.getContext();
ctx.put("name","你要传的值!!");
4.在页面form中:
<form method="post"
action="<s:url value="myaction.action?id=%{#request.id}"
encode="iso-8859-1" />" >
</form>
应该够你用了吧?
如:action中有一个name属性,已经设定了get和set方法。在struts.xml中的设置如下
<result name="update" type="redirectAction">
<param name="actionName">update</param>
<param name="name">${name}</param>
</result>
在转向后的action中就可以用String idStr = ServletActionContext.getRequest().getParameter("name");方式取值。当然也有其他的方法。你也可以参考官方文档如:http://struts.apache.org/2.0.12/docs/parameters-in-configuration-results.html
举个列子
你在一个Action里面保存了Arraylist对象,当你在另一个Action里面要用到此对象是,你可以用request.getSession().getAttribute("");获取此对象.
即使redirect action也是可以传递的,可以在属性里用param传递。
主要还是 redirect 和 forward 的区别
<result type="redirectAction">
<param name="actionName">affBackManage.action</param>
<param name="curPage">${curPage}</param>
<param name="id">${id}</param>
<param name="updateInfo">${updateInfo}</param>
</result>
</action>
param里除了actionName是你要跳转的路径,剩下的都是你可以自己添加或删减的参数,最终跳转到affBackManage.action?curPage=..&id=..&updateInfo=..