JEXL - 如何获取未知变量的所有警告消息?

时间:2017-08-11 16:05:38

标签: java jexl

如何获取未知变量的所有警告信息?

我有一个表达式,我想评估并知道所有缺失的变量。

示例:

jexl.setStrict(false);
Expression e = (Expression) jexl.createExpression("(pqr||abc)&&xyx&&!(rsw||ruy)&&!sss");

JexlContext context = new MapContext();
 context.set("rsw",false);  
 context.set("xyx",true);   
 Object obj=e.evaluate(context);
 System.out.println(obj);

输出:

Aug 11, 2017 10:58:24 AM org.apache.commons.jexl2.Interpreter unknownVariable
WARNING: com.AdhocPrograms.JexlExample.main@40![1,4]: '(pqr || abc) && xyx && !(rsw || ruy) && !sss;' undefined variable pqr
false
Aug 11, 2017 10:58:24 AM org.apache.commons.jexl2.Interpreter unknownVariable
WARNING: com.AdhocPrograms.JexlExample.main@40![8,11]: '(pqr || abc) && xyx && !(rsw || ruy) && !sss;' undefined variable abc

我想捕获两个未定义的变量。如果我设置jexl.setStrict(true)并添加try和catch块,我只能捕获一个变量。

  catch(JexlException.Variable xjexl)       {
            System.out.println("Exception:" +xjexl.getVariable());          
            xjexl.printStackTrace();
        }

我也愿意使用其他技术。

1 个答案:

答案 0 :(得分:1)

我能够使用下面的getVariables()方法。

样品:

jexl.createScript( “(PQR || ABC)及;&安培; XYX&安培;&安培;!(RSW ||鲁伊奎拉)及;&安培;!SSS”)getVariables();