轉自:https://blog.csdn.net/hewei0241/article/details/27331019
不是action傳值到jsp頁面,而是jsp頁面獲取action中的屬性值,或者范圍(如request,session,application等)里的值。
所以,有兩種方法
1,獲取的是action屬性的值,用struts2標簽和ognl即可獲取如,<s:property value="屬性名.屬性名。。。"/>
這種形式2,獲取的是范圍內的值直接使用EL表達式如${name}為requestScope范圍綁定的名為name的屬性,
省略requestScope因為這是默認的范圍${sessionScope.name}為sessionScope范圍綁定的名為name的屬性
1 1)action定義getPersons() 2 2)Person中定義getName()和getAge() 3 3): 4 <s:iterator id="u" value="persons"> 5 <s:property value='#u.getName()'/> 6 <s:property value='#u.getAge()'/> 7 </s:iterator>
總結來說是2中方式:如下
1、一般是在Action中定義一個成員變量,然后對這個成員變量提供get/set方法,在JSP頁面就可以取到這個變量的值了。
1)在Action中定義成員變量
1 //定義一個成員變量 2 private String message; 3 4 //提供get/set方法 5 public String getMessage() { 6 return message; 7 } 8 public void setMessage(String message) { 9 this.message = message; 10 }
2)在JSP頁面中取值
1 ${message} 2 或者 3 <s:property value="message"/>
2、但是定義的成員變量多了,感覺整個Action的代碼就很長了。這個時候可以使用一些Servlet API進行值的存取操作:HttpServletRequest、HttpSession和ServletContext。Struts2對這個三個對象用Map進行了封裝,我們就可以使用Map對象來存取數據了。
1)在Action中存值
1 ActionContext actionContext = ActionContext.getContext(); 2 3 //get HttpServletRequest 4 Map<String,Object> request = (Map) actionContext.get("request"); 5 request.put("a", "a is in request"); 6 7 //get HttpSession 8 //Map<String,Object> session = (Map) actionContext.get("session"); 9 Map<String,Object> session = actionContext.getSession(); 10 session.put("b", "b is in session"); 11 12 //get ServletContext 13 //Map<String,Object> application = (Map) actionContext.get("application"); 14 Map<String,Object> application = actionContext.getApplication(); 15 application.put("c", "c is in application");
2)在JSP頁面上取值
1 ${a} 2 ${b} 3 ${c} 4 or 5 ${requestScope.a} 6 ${sessionScope.b} 7 ${applicationScope.c}