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 ответ

Мне удалось обойти ниже метод getVariables().

Образец:

("! (PQR || а) && хух && (RSW || Рюй) && SSS!") Jexl.createScript getVariables().

Другие вопросы по тегам