一、介绍
Java表达式语言--Java Expression Language(JEXL),这是Apache开源的一个jar包,官网地址,旨在促进在用Java编写的应用程序和框架中,实现动态和脚本功能,JEXL基于JSTL表达式语言的一些扩展实现了表达式语言,支持shell脚本或ECMAScript(js)中的大多数构造.
该库提供了一个占用空间小的API - 核心功能适合3个类和10个方法
这是一种简单的表达式语言,最初受Apache Velocity 以及 JavaServer Pages Standard Tag Library version 1.1(JSTL)和JavaServer Pages version 2.0(JSP)中定义的表达式语言的启发,语法现在接近ECMAScript和“shell-script”的混合。
必须注意的是,JEXL 不是 JSTL 1.1(JSR-052)或JSP 2.0(JSR-152)中定义的EL的兼容实现
二、简单示例
1.引入jar包,以maven为例
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-jexl3</artifactId>
<version>3.1</version>
</dependency>
2.简单java示例
//创建或者取回一个引擎
JexlEngine jexl = new JexlBuilder().create();
//创建一个表达式
String jexlExp ="foo.innerFoo.bar()";
JexlExpression e = jexl.createExpression(jexlExp);
//创建上下文并添加数据
JexlContext jc = new MapContext();
jc.set("foo",new Foo());
//现在评估表达式,得到结果,结果为最后一个表达式的运算值
Object o = e.evaluate(jc);