• Map栈 :request,session,application的一个属性值或一个请求参数的值。

若想访问ContextMap里的某个对象的属性,可以使用以下几种之一:

#object.propertyName

#object['propertyName']

#object["propertyName"]

示例:

返回session中的code属性:#session.code;

返回request中的customer对的name属性值:#request.customer.name

返回域对象(按request,session,application的顺序)的lasterActionDate属性:#attr.lastAccesssDate

 Product.java实现RequestAware、SessionAware接口,并在save方法中把this存放到sessionMap,把product2存放到requestMap中:

 1 package com.dx.struts2.valuestack;
 2 
 3 import java.io.UnsupportedEncodingException;
 4 import java.util.Map;
 5 
 6 import org.apache.struts2.interceptor.RequestAware;
 7 import org.apache.struts2.interceptor.SessionAware;
 8 
 9 import com.opensymphony.xwork2.ActionContext;
10 import com.opensymphony.xwork2.util.ValueStack;
11 
12 public class Product implements RequestAware,SessionAware{
13     private Integer productId;
14     private String productName;
15     private String productDesc;
16     private Double productPrice;
17     
18     public Integer getProductId() {
19         return productId;
20     }
21     public void setProductId(Integer productId) {
22         this.productId = productId;
23     }
24     public String getProductName() {
25         return productName;
26     }
27     public void setProductName(String productName) {
28         this.productName = productName;
29     }
30     public String getProductDesc() {
31         return productDesc;
32     }
33     public void setProductDesc(String productDesc) {
34         this.productDesc = productDesc;
35     }
36     public Double getProductPrice() {
37         return productPrice;
38     }
39     public void setProductPrice(Double productPrice) {
40         this.productPrice = productPrice;
41     }
42     
43     public String save(){     
44         System.out.println("save");
45         
46         // 1、获取值栈对象
47         ValueStack valueStack= ActionContext.getContext().getValueStack();
48                 
49         // 2、生成一个Product2对象
50         Product2 product2=new Product2();
51         product2.setProductDesc("product2 desc");
52         product2.setProductName("product2 name");
53         
54         // 3、将Product2对象存放到值栈中
55         valueStack.push(product2);
56         
57         sessionMap.put("product", this);
58         requestMap.put("product2", product2);
59         
60         return "success";
61     }
62     
63     private Map<String,Object> requestMap;
64     
65     @Override
66     public void setRequest(Map<String, Object> request) {
67         this.requestMap=request;
68         
69     }
70     
71     private Map<String,Object> sessionMap;
72     
73     @Override
74     public void setSession(Map<String, Object> session) {
75         this.sessionMap= session;
76     }
77 }
View Code

相关文章: