2个小问题望解答:
①我在自己的Action里添加ActionContext.getContext().put("Test", "get!!");语句以后,在返回result的jsp页面中添加<s:property value="Test"/>为什么可以显示get!!字符串?
用put方法应该是把value添加到StackContext里,而不是valueStack里!
要得到这个字符串的话应该<s:property value="#Test"/>而不是<s:property value="Test"/>....但是两者都可以得到这个字符串...这是为什么?(valueStack里没有这个值,stackContext里有)
②Action里调用
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("request", "request");
在返回的jsp页面中用el ${requestScope.request }是可以得到字符串的,但是用<%request.getAttribute("request");%>是不行的。这是为什么呢?
稍微查了下资料,有人说“Struts2重写了request对象的getAttribute方法”,我稍微看了下Struts2的代码,它是先调用Object attribute = super.getAttribute(s); 然后去判断atribute是否为null,null的话再继续在ActionContext里去get这个Object..回到这个问题..原本super的request已经设置过attribute了,那super.getAttribute(s)应该是有返回值的,为什么<%request.getAttribute("request");%>还是什么都不返回呢?
真心求解。。谢谢
request对象不是ServletActionContext.getRequest()是什么意思....