使用Ognl表达式的基础教程:语法解析与数据root和ContextMap的获取方法
最编程
2024-02-09 19:53:01
...
import com.macw.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import ognl.Ognl;
import ognl.OgnlException;
import com.macw.entity.Address;
import com.macw.entity.Person;
public class TestOgnl1 {
public static void main(String[] args) throws OgnlException {
//通过ongl从root区(对象)中获取属性值
Address address = new Address("丰乐路博颂路","450000");
Person p = new Person("xushy",18,"男","18530031576",address);
//获取name属性
p.getName();
//获取street子属性
p.getAddress().getStreet();
//获取root区的属性
System.out.println(Ognl.getValue("name", p));
//获取root区对象的属性的子属性
System.out.println(Ognl.getValue("address.street", p));
List<String> favorites = new ArrayList<String>();
Collections.addAll(favorites, "唱","跳","rap","篮球");
p.setFavorites(favorites);
//获取p对象的List集合属性的某一个元素
System.out.println(Ognl.getValue("favorites[0]", p));
Map<String,Integer> scores = new HashMap<String,Integer>();
scores.put("语文", 100);
scores.put("数学",60);
scores.put("英语", 85);
p.setScores(scores);
//获取Map属性的键值对数据
System.out.println(Ognl.getValue("scores[\"语文\"]", p));
System.out.println(Ognl.getValue("scores['语文']", p));
//Ognl的运算
/*
* 数学运算 + - * / %
* 比较运算 > >= < <= == !=
* 逻辑运算 && || !
* 三目运算符: ? :
*/
System.out.println(Ognl.getValue("age > 16", p));
System.out.println(Ognl.getValue("age + 16", p));
System.out.println(Ognl.getValue("age >= 18 ? '青年':'少年'", p));
//Ognl表达式调用方法
System.out.println(Ognl.getValue("name.toUpperCase()",p));
System.out.println(Ognl.getValue("name.length()", p));
System.out.println(Ognl.getValue("favorites.size()", p));
System.out.println(Ognl.getValue("name.charAt(0)", p));
}
}
上一篇: 了解 NoSQL:基础知识简介
下一篇: 在Java中运用OGNL表达式的方法