JSEL是一个基于逆波兰式结构,采用JS运算规则的简单的表达式解释引擎。 同时它还是一个JSON解析引擎。
基本特征
- 基于逆波兰式这个简单的计算模型,最大的特点就是简单。
- 支持短路优化(运算过程中,会根据需要,跳过无需计算的节点(boolean运算和三元运算有此类需求)。
-
运算规则基于前端开发人员熟悉的JavaScript,可以用于模板引擎的表达式实现。
- 他同时还是JSON解释引擎的超集,可以用于解释JSON数据源。
- 简单的运算接口,可以简单的重新定义运算规则。
- 由于引擎本身实现的简单,程序体积非常小(JAR文件只有22k,同类工具OGNL 168k);适合于嵌入其他对文件大小要求苛刻环境,如需要下载的webstart小程序。
基本用法
import org.xidea.el.Expression;
import org.xidea.el.ExpressionImpl;
import java.util.HashMap;
public class Test{
public static void main(String[] args){
Expression el = new ExpressionImpl("var1 +2 * var2");
//Expression el = new ExpressionImpl("var1 +2 * var2",new CalculaterImpl());//你也可以定义你自己的运算规则
HashMap context = new HashMap();
context.put("var1",111);
context.put("var2",222);
Object result1 = el.evaluate(context);//555
context.put("var2",333);
Object result2 = el.evaluate(context);//777
System.out.println("result1:");
System.out.println(result1);
System.out.println("result2:");
System.out.println(result2);
}
}
相关推荐
在这个例子中,`${msgs.addFullName}`是一个EL表达式,它会被JSP引擎解析并计算出一个值,然后通过`<%= %>`插入到JS代码中,成为`var addFullName`变量的值。 #### 方法二:使用数据属性 另一种方法是利用HTML5的...
注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...
注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...
注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...
注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...
注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...
注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...
注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...
注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...
注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...
注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...
注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...
注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...
注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...
4. **可扩展性**:JavaScript库如D3.js提供了丰富的功能,可以轻松地扩展工作流程图和规则引擎图的功能,如动画效果、实时更新等。 总的来说,工作流程图和规则引擎图是业务逻辑和流程管理的重要工具。利用...
`isELIgnored="true"`意味着JSP引擎会忽略EL表达式,将其视为普通字符串处理,而`isELIgnored="false"`则启用EL表达式解析。 在JavaEE4中,默认情况下`isELIgnored`是设为`false`的,这意味着EL表达式会被解析。但...
Java表达式攻防中的黑魔法(Black Magic)主要集中在Java表达式语言(EL)、Spring表达式语言(SpEL)以及对象图导航语言(OGNL)等领域。 #### 关键概念解析 1. **Java表达式语言(EL)**: - **定义**:EL是一...
4. **正则表达式引擎** - **DFA(确定有限状态自动机)**:快速但可能无法找到所有匹配,通常用于简单的模式。 - **NFA(非确定有限状态自动机)**:更灵活,能匹配复杂模式,但可能较慢。 5. **实践案例** - **...
将JSON数据提交给后端后,后端可以解析这些数据,并利用Liteflow规则引擎生成相应的EL(Expression Language)表达式。 EL表达式是一种简化版的脚本语言,常用于Web应用中,用来动态计算和访问JavaBeans属性。在...