用到的类有:

相应代码:

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>

效果:

OGNL取Map,List,Set的值的更多相关文章

  1. EL表达式取Map,List值的总结

    EL表达式取Map中的值:后台action 中: Map map = new HashMap(); map.put(key1,value1); map.put(key2,value2); map.pu ...

  2. Jquery操作select,左右移动,双击移动 取到所有option的值

    $(function () { function MoveItem(fromId, toId) { $("#" + fromId + " option:selected& ...

  3. jsp页面使用el 按key获取map中的对应值

    jsp页面使用el 按key获取map中的对应值 转自:<jsp页面使用el 按key获取map中的对应值>地址:http://blog.csdn.net/baple/article/de ...

  4. map.keySet()获取map全部的key值

    map.keySet()获取map全部的key值   public static String getUrlWithQueryString(String url, Map<String, Str ...

  5. 【Java必修课】通过Value获取Map中的键值Key的四种方法

    1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...

  6. 通过Value获取Map中的键值Key的四种方法

    1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...

  7. Map:containsKey、containsValue 获取Map集合的键值的 值

    get(Object key) 返回与指定键关联的值: containsKey(Object key) 如果Map包含指定键的隐射,则返回true: containsValue(Object valu ...

  8. java将map拼接成“参数=值&参数=值”

    Java将Map拼接成"参数=值&参数=值" 把一个map的键值对拼接成"参数=值&参数=值"即"username=angusbao& ...

  9. 保留键的情况下取字典中最大的值(max\zip函数的联合使用)

    在我们平常想要获取字典中value最大或者最小的值的时候,常常使用如下函数: testDict = {"age1":18,"age2":20,"age ...

随机推荐

  1. win7更改路由器wifi 密码

    1.有线.无线都能进入192.168.1.1路由设置界面 (也可能是192.168.0.1看路由底面IP) ps: 无线(笔记本与路由没使用网线相连)情况下必须开启wifi连接上该路由才能进入. 无法 ...

  2. 用Swift实现一款天气预报APP(三)

    这个系列的目录: 用Swift实现一款天气预报APP(一) 用Swift实现一款天气预报APP(二) 用Swift实现一款天气预报APP(三) 通过前面的学习,一个天气预报的APP已经基本可用了.至少 ...

  3. git fatal:HttpRequestException encountered

    网上查了一下发现是Github 禁用了TLS v1.0 and v1.1,必须更新Windows的git凭证管理器,才行. https://github.com/Microsoft/Git-Crede ...

  4. Image 和byte[]之间的转换

    1.Image 转 byte[] public byte[] GetByteByImage(Image image) { byte[] bt = null; try { if (!image.Equa ...

  5. Hdu1547 Bubble Shooter 2017-01-20 18:38 44人阅读 评论(0) 收藏

    Bubble Shooter Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Tota ...

  6. underscore collections

    1._.each(list, iterator, [context]):对集合中每一元素执行处理器方法. 如果传递了context参数,则把iterator绑定到context对象上.每次调用iter ...

  7. asp.net——Base64加密解密

    /// <summary> /// 实现Base64加密解密 /// </summary> public sealed class Base64 { /// <summa ...

  8. .Net C# 阿拉伯数字转为中文金额数字

    一个练习,将阿拉伯数字转为中文金额数字,针对包含整数的金额有问题 代码: public string ReturnStr(string inputNum) { ", }; string[] ...

  9. C# Winform下一个热插拔的MIS/MRP/ERP框架16(窗体基类场景2)

    如果没有特别需求,和场景1一样只变更表名,主键字段,检测字段等名称,不需要写其它代码了. * 清单列表+单笔编辑/保存,适用于大多数基础资料管理以及简单的单据资料录入(当然,排版是要改一改的): * ...

  10. zTree第三章,异步加载,前端

    zTree异步加载 ---------------------------------------------------------------------------------- 具体详见API ...