OGNL取Map,List,Set的值
用到的类有:
相应代码:
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的值的更多相关文章
- EL表达式取Map,List值的总结
EL表达式取Map中的值:后台action 中: Map map = new HashMap(); map.put(key1,value1); map.put(key2,value2); map.pu ...
- Jquery操作select,左右移动,双击移动 取到所有option的值
$(function () { function MoveItem(fromId, toId) { $("#" + fromId + " option:selected& ...
- jsp页面使用el 按key获取map中的对应值
jsp页面使用el 按key获取map中的对应值 转自:<jsp页面使用el 按key获取map中的对应值>地址:http://blog.csdn.net/baple/article/de ...
- map.keySet()获取map全部的key值
map.keySet()获取map全部的key值 public static String getUrlWithQueryString(String url, Map<String, Str ...
- 【Java必修课】通过Value获取Map中的键值Key的四种方法
1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...
- 通过Value获取Map中的键值Key的四种方法
1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...
- Map:containsKey、containsValue 获取Map集合的键值的 值
get(Object key) 返回与指定键关联的值: containsKey(Object key) 如果Map包含指定键的隐射,则返回true: containsValue(Object valu ...
- java将map拼接成“参数=值&参数=值”
Java将Map拼接成"参数=值&参数=值" 把一个map的键值对拼接成"参数=值&参数=值"即"username=angusbao& ...
- 保留键的情况下取字典中最大的值(max\zip函数的联合使用)
在我们平常想要获取字典中value最大或者最小的值的时候,常常使用如下函数: testDict = {"age1":18,"age2":20,"age ...
随机推荐
- CSS—— em的详解
字体大小在浏览器的默认样式表中有规定.一般采用em为单位,也就是相对单位,1em=16像素. 同时,像P h1等等标签都采用浏览器默认的em单位,P为1em,h1为2em等等. 两条重要的规则: 1. ...
- 查看jar包的jdk版本并降级
用解压工具打开jar包(例子都是用7zip) 进入到META-INF目录,查看MANIFEST.MF文件,查看Bulid-Jdk,下图就为1.7.0_55版本的JDK,这就表示jetty-serv ...
- 解决IE8不支持console
解决IE8不支持console,代码中包含console时会报错. //解决 IE8 不支持console window.console = window.console || (function ( ...
- Android Dialog 的一些特性
1. Dialog 与 AlertDialog 的区别. AlertDialog 是一种特殊形式的 Dialog.这个类中,我们可以添加一个,两个或者三个按钮,可以设置标题.所以,当我们想使用 Ale ...
- Android性能测试-内存
前言: 近阶段都在探索android性能测试方面的东西,其中一个很重要的指标就是内存.对于内存,主要是一些gc是不是及时,或者说一些引用有没有及时释放,有没有导致oom或者内存持续增加导致卡顿,有没有 ...
- “全栈2019”Java异常第十九章:RuntimeException详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- “全栈2019”Java异常第四章:catch代码块作用域详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- redis-cluster 集群搭建
redis 准备 下载:https://redis.io/download 下载解压后的地址: /Users/sam/soft/redis-4.0.2 redis-cluster 3master 3 ...
- 浅析group by,having count()
SELECT COUNT(*) FROM (SELECT COUNT(id),order_type,city_id,category_id,major_category_id,puid,user_id ...
- mxonline实战3,编写首页及用户登录页面1
对应github地址:首页和用户登陆1 一. 显示首页 1. 修改mxonline/setttings.py 在TEMPLATES代码块修改DIRS为 'DIRS': [os. ...