不能这么请求。
因为页面上的request 和使用form提交的request 请求 不是一个对象。测试如下:
首先在jsp页面中打印出来request对象
<%
request.setAttribute("test","test");
System.out.println("request="+request+"返回页面对象");//这里打印出页面request对象
%>
部分action代码如下:
HttpServletRequest request = ServletActionContext.getRequest();
System.out.println("request="+request+"action里的request对象");
String test = (String) request.getAttribute("test");
System.out.println("test="+test);
经过测试 输出结果如下:
request=org.apache.struts2.dispatcher.StrutsRequestWrapper@199f0e5返回页面对象
request=org.apache.struts2.dispatcher.StrutsRequestWrapper@19665e1action里的request对象
test=null
request=org.apache.struts2.dispatcher.StrutsRequestWrapper@19665e1返回页面对象
说明:
输出结果第一行 是第一次加载请求页面时,调用当前页面的request对象(其实我们打开请求页面时产生的请求对象)
第二行 是我用form 提交然后在action里获取的request对象,可以看到两个request对象的类型是一样的 但是值却不一样,这正好说明了 我们每次请求 都会重新产生一个request对象。
到这里,第三行就毫无疑问了,既然重新生成了request对象 那当然不会有我们之前set的属性咯。
第四行很关键,我们看到了那个action里的request对象 返回到了页面上,他们是同一个类型,同一个对象。这正好说明了 当我们的响应模式为dispatcher时 request参数也会返回到页面,因为request对象没有变。
希望对你有所帮助!
是否可以解决您的问题?
设置断点,看一下,这个值是在哪里丢的,然后进行相应的处理
步骤如下:
1、首先打开自己的项目。
2、在项目中找到想要调试的地方,在代码行的前方点击设置断点,或者把鼠标移动到代码行,用快捷键“Ctrl+Shift+b”设置断点。
3、然后在上方标签栏中,操作“Debug As”->"Java Application"。
4、在弹出的对话框点击“Yes”,进入“debug模式”。
5、在窗口的右上方可以看到 代码中的相对应得值。
特别提示:F5是跳进,F6是执行下一步,F7是跳出。