将action得到的值,通过request显示到页面中

百事通信息网


     今天又遇到一个问题,将action得到的记录集(ArrayList)存到request中,再将其转到jsp页面,该页面居然在request中找不到这个记录集,将其存放到servletContext中便可以得到该记录集(^O^).
还是跟往常一样,遇到问题首先想到的是Baidu and Google,不过这次他们二位"仁兄"也帮不上忙,于是去各大论坛求助,唉......了一个多小时,无人问径,郁闷哪!凡事得靠自已呀,经过几个小时的查阅资料,最终问题得以解决,心情舒畅哪!

action中代码片段:
 ......
ArrayList arlist=(ArrayList)this.ius.getUsers();
request.setAttribute("users", arlist);
return mapping.findForward("success");
 ......


页面代码片段:
 ......
<logic:present name="users">
 <table>
  <logic:iterate id="user" name="users" indexId="number">
   <tr>
    <td>
     <bean:write name="number" />
     <bean:write name="user" property="userid" />
     <bean:write name="user" property="username" />
    </td>
   </tr>
  </logic:iterate>
 </table>
</logic:present>
 ......

struts配置文件代码片段:
 ......
<action path="/listUser" type="org.springframework.web.struts.DelegatingActionProxy" validate="false" >
 <forward name="success" path="/listUser.jsp" redirect="true" />
</action>
 ......

问题的关键就出在redirect="true",将值改为false就可以了.

那什么到底有何区别呢?
当元素有redirect=“false”属性或redirect属性不存在的时候,RequestDispatcher.forward(…)被执行;当redirect=“true”是,将调用sendRedirect(…)方法。
--------------------------------------------------------------------------
forward是服务器内部重定向,也就是说服务器得到请求后重定向到本应用的另一个程序(页面),在此过程中并没有通知客户端,所以在跳转的叶面中,request作用域的变量都能生效.
redirect是外部(自已理解的)重定向方式,服务器得到请求后先是通知道客户端,客户端再次发送请求,此时request不被保留.

你可能感兴趣的:(jsp,struts,Google)