发帖次数较少,大牛轻拍。。
------------------------------------------
由于最近在使用struts2,一些应用难免犯浑。进入正题。
大概流程 action(A)----------->产生对象USRR------>A.jsp----------->B.action----------->B.jsp
由于B.jsp还需使用user对象。故产生了想在A.JSP传递这个对象到b.action.
主流做法:
1.放在session
2.传递某些参数,再去数据库查询一遍这个对象。
3.页面隐藏USER对象中的各个属性。
为什么不能在A.jsp页面直接传递对象到action呢?
-----------------
操刀入手:
----------
尝试1:
在A.jsp中写入
request.setAttribute("user");
在B.action中获取request.setAttribute("user");
结果一直是null.
百思不得其解,一直以为是struts2中封装request的某些原因,或者是拦截器在作祟。。
后来猛然发现:是因为不是同一个request的关系,和struts2无关。。。
因为这个request 是上次的请求对象,新的请求会重新产生request.
总结一下:
在JSP 页面上使用settAttribute是没有用的。
即:客户端发出请求,服务器端相应完毕后,request即失效了。
剩下的讲究基本是response.sendRedirect 或者是 forward:
如果用request,要注意request的范围仅限于同一个request对象;
如果使用了form的"action"或者response.sendRedirect("xxx.jsp")等调转,
则不再是同一个request对象,即用request.getAttribute("name")将取不到值。
换成request.getRequestDispatcher("xxx.jsp").forward(request,response);
才能共享request中数据.
如果采用getParameter的形式,抱歉,只能支持string.
jsp页面传递对象是不是就无解呢?(别告诉我JSON什么的封装对象的属性值)。
------------------------------------------
由于最近在使用struts2,一些应用难免犯浑。进入正题。
大概流程 action(A)----------->产生对象USRR------>A.jsp----------->B.action----------->B.jsp
由于B.jsp还需使用user对象。故产生了想在A.JSP传递这个对象到b.action.
主流做法:
1.放在session
2.传递某些参数,再去数据库查询一遍这个对象。
3.页面隐藏USER对象中的各个属性。
为什么不能在A.jsp页面直接传递对象到action呢?
-----------------
操刀入手:
----------
尝试1:
在A.jsp中写入
request.setAttribute("user");
在B.action中获取request.setAttribute("user");
结果一直是null.
百思不得其解,一直以为是struts2中封装request的某些原因,或者是拦截器在作祟。。
后来猛然发现:是因为不是同一个request的关系,和struts2无关。。。
因为这个request 是上次的请求对象,新的请求会重新产生request.
总结一下:
在JSP 页面上使用settAttribute是没有用的。
即:客户端发出请求,服务器端相应完毕后,request即失效了。
剩下的讲究基本是response.sendRedirect 或者是 forward:
如果用request,要注意request的范围仅限于同一个request对象;
如果使用了form的"action"或者response.sendRedirect("xxx.jsp")等调转,
则不再是同一个request对象,即用request.getAttribute("name")将取不到值。
换成request.getRequestDispatcher("xxx.jsp").forward(request,response);
才能共享request中数据.
如果采用getParameter的形式,抱歉,只能支持string.
jsp页面传递对象是不是就无解呢?(别告诉我JSON什么的封装对象的属性值)。