用到的类有:
相应代码:
public class Dog { private String name; public Dog(){ } public Dog(String name){ this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "dog"+name; } }
public class Cat { private Dog friend; private String name; public Cat(){} public Cat(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Dog getFriend() { return friend; } public void setFriend(Dog friend) { this.friend = friend; } public String miao(){ return "miao"; } public static int leg(){ return 4; } }
public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public User(){ } public User(int age){ this.age = age; } public String getName() { return name; } @Override public String toString() { return "user"+age; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
public class UserAction extends ActionSupport{ /*private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }*/ private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } private Cat cat; public Cat getCat() { return cat; } public void setCat(Cat cat) { this.cat = cat; } private List<User> users = new ArrayList<User>(); private Set<Dog> dogs = new HashSet<Dog>(); private Map<String,Dog> dogMap = new HashMap<String,Dog>(); private Cat[] cats = new Cat[5]; public Cat[] getCats() { return cats; } public void setCats(Cat[] cats) { this.cats = cats; } public List<User> getUsers() { return users; } public void setUsers(List<User> users) { this.users = users; } public Set<Dog> getDogs() { return dogs; } public void setDogs(Set<Dog> dogs) { this.dogs = dogs; } public Map<String, Dog> getDogMap() { return dogMap; } public void setDogMap(Map<String, Dog> dogMap) { this.dogMap = dogMap; } public UserAction(){ cats[0] = new Cat("cat1"); cats[1] = new Cat("cat2"); cats[2] = new Cat("cat3"); users.add(new User(1)); users.add(new User(2)); users.add(new User(3)); dogs.add(new Dog("dog1")); dogs.add(new Dog("dog2")); dogs.add(new Dog("dog3")); dogMap.put("dog1", new Dog("101")); dogMap.put("dog2", new Dog("102")); dogMap.put("dog3", new Dog("103")); } public String execute() throws Exception { return SUCCESS; } /*public int fun(){ return 250; } public static int fun2(){ return 500; }*/ }
在UserAction里new 几个Map、Set、List,生成相应的get、set方法。
对应的ognl的html代码:
<body> <ol> <li>访问值栈中的action中的普通属性:username=:<s:property value="username"/></li> <li>访问值栈中 对象的普通属性(get、set方法)<s:property value="user.name"/></li> <li>访问值栈中 对象的普通属性(get、set方法)<s:property value="cat.friend.name"/></li> <li>访问值栈中 对象的普通方法<s:property value="cat.miao()"/></li> <li>访问值栈中 对象的普通方法<s:property value="cat.leg()"/></li> <li>访问值栈中 action的普通方法<s:property value="fun()"/></li> <li>访问值栈中 action的静态方法<s:property value="fun2()"/></li> <hr> <li>访问静态方法:<s:property value="@com.oracle.ognl.action.C@ccc()"/></li> <li>访问静态属性:<s:property value="@com.oracle.ognl.action.C@sex"/></li> <li>访问Math类的静态方法<s:property value="@@max(10,100)"/></li> <li>访问普通类的构造方法<s:property value="new com.oracle.action.Cat('sdf')"/></li> <hr> <li>访问数组元素:<s:property value="cats"/></li> <li>访问List:<s:property value="users"/></li> <li>访问List中的某个元素:<s:property value="users[0]"/> <li>访问List中元素某个属性的集合:<s:property value="users.{age}"/></li> <li>访问List中元素某个属性的集合中的特定值:<s:property value="users.{age}[0]"/>||<s:property value="users[0].age"/></li> <li>访问Set:<s:property value="dogs"/></li> <li>访问Set中某个元素(娶不到,set是无序的):<s:property value="dogs[1]"/></li> <li>访问Map(很少一次取出来完):<s:property value="dogMap"/></li> <li>访问Map中的某个元素:<s:property value="dogMap.dog1"/>||<s:property value="dogMap['dog1']"/>||<s:property value="dogMap[\"dog1\"]"/></li> <li>访问Map中所有的key:<s:property value="dogMap.keys"/></li> <li>访问Map中所有的value:<s:property value="dogMap.values"/></li> <li>访问容器的大小:<s:property value="dogMap.size()"/>||<s:property value="users.size"/></li> </ol> <s:debug></s:debug> </body>
效果:
欢迎关注个人公众号一起交流学习: