欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

使用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)); } }