首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > Apache >

表达式语言发动机:Apache Commons JEXL 2.1 发布

2013-03-04 
表达式语言引擎:Apache Commons JEXL 2.1 发布http://www.linuxde.net/2011/12/4348.htmlCommons JEXL 2.1

表达式语言引擎:Apache Commons JEXL 2.1 发布
http://www.linuxde.net/2011/12/4348.html
Commons JEXL 2.1 发布了,该版本和 2.0.1 是二进制兼容的,但源码不兼容,因为新增了两个接口:

org.apache.commons.jexl2.Script
org.apache.commons.jexl2.JexlInfo
JEXL 2.1 改进内容:

A more thorough arithmetic (JexlArithmetic) that allows fine control over decimals (scale and precision), a new syntax for numeric literals (OGNL inspired Big and Huge notations) and a better type handling keeping the most appropriate representation in casual operations.
The introduction of script variables and parameters that reduce context dependencies and methods; this allows to perform checks after script creation (light static checking hints). Plus the ability to call script from scripts.
A sandoxing feature to restrict and rename what JEXL can access from the environment allowing tighter control over security.
Extensions to UnifiedJEXL that allow the creation of templates.
完整记录请看:http://commons.apache.org/jexl/changes-report.html#a2.1

JAVA Expression Language (JEXL) 是一个表达式语言引擎,可以用来在应用或者框架中使用。JEXL 受Velocity 和 JSP 标签库 1.1 (JSTL) 的影响而产生的。需要注意的是, JEXL 并不时 JSTL 中的表达式语言的实现。

下载地址:http://commons.apache.org/jexl/download_jexl.cgi


java实现字符串转换成可执行代码http://wiselyman.iteye.com/blog/1677444
使用commons的jexl可实现将字符串变成可执行代码的功能,我写了一个类来封装这个功能:


结果打印如下
年龄在30岁以上,并且身上有超过100元现金?  false
左腿上有超过2500根汗毛?  true

上面的例子,如果不知道哪条是左腿呢,这样的表达式该如何写? leg[leftOrRight='left'].hair>2500 ?
这个写法不会报错,但结果不正确,不知如何实现,求答复

热点排行