Java中使用JS解析器(JDK 1.6)
September 28th, 2009
No comments
最近项目中涉及以下情景,针对用户设置一对规则,用户申请的时候按照设定的规则进行验证。
表结构如下:
规则表:
| rule_id | rule_type | rule_name | status |
| 规则Id | 规则类型 | 规则名称 | 状态 |
规则明细表:
| rule_id | rule_detail_id | rule_name | rule_Type | expression | rule_value |
| 规则Id | 明细规则Id | 规则名称 | 规则key | 表达式(>=,==,<=,<,>) | 规则值 |
涉及规则值的判断和解析,找了半天,高手指点使用JS解析。代码如下(JDK1.6):
import javax.script.ScriptEngineManager; ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName(“JavaScript”); String ruleType = "1"; String expression = ">"; long ruleValue = 111; long v = 222; // 需要验证的值 JavaScriptValue j = new JavaScriptValue(ruleType, v); engine.eval(j.toSting()); Boolean b = (Boolean)engine.eval(ruleType + expression + ruleValue); // 判断2个表达式是否相等
Recent Comments