今天在做struts2实验的死后遇见了一个诡异的问题,望各位大大帮忙想想问题出在哪。在jsp中使用了request.setAttribute放入一个值;然后无论是在Action中,还是在另一个jsp中,使用request.getAttribute将其取出,得到的都为空;但是,在页面上我也同时使用了隐藏域,在Action和jsp都能正确的通过request.getParameter获取到值。如:
第一个jsp的代码:  <%request.setAttribute("mes", "123"); %>
  <form name="1" action="2.jsp">
  <input type="hidden" value="hidden" name="hidden"/>
  <input type="submit" value="go"/>
  </form>
跳转页面的jsp代码:<%String s = (String)request.getAttribute("mes"); 
  String r = request.getParameter("hidden");
%>
<%=s %>
<%=r %>
页面显示的结果:
null hidden 这个问题是什么原因造成的呢?难道是request.setAttribute没有将值放入到request中?
这种问题,不大不小,如鲠在喉啊,十分难受,望各位前辈不吝赐教啊~~~~~~~~

解决方案 »

  1.   

    提交应该是只提交了表单(form)里的内容,再提交的时候等于重定向。
      

  2.   

    楼主需要明白request的作用域。
      

  3.   

    用下面方法进行页面跳转:
    RequestDispatcher rd = new RequestDispatcher();
    rd.forward(request, response) 
      

  4.   

    request的作用范围不同,, 就这个情况用session比较好,,,session.setAttribute("mes","123");session.getAttribute("mes");我试过了,,可以的!   答案希望你满意!!
      

  5.   

    request作用域 一次请求范围内  当你访问1.jsp时,算一次请求,当form表单提交到2.jsp,算另一个请求,因为2个是不同的请求,所以不能共用request域中的数据。顶2楼 
      

  6.   

    的确  这里用session比较好 做全局吧
      

  7.   

    跨页面的用session比较合理。楼上正解。
    遇到这样问题可以试试本页面输出看看储存情况,再试跨页面的读取。
    一样的代码不行当然是作用域的问题喽~~~