Получить значения выражений в JEXL - PullRequest
0 голосов
/ 11 декабря 2018

Имея следующее выражение JEXL:

String expression = "myVar >= 12345 && mySecondVar <= 56789";

Я могу вызвать createScript и getVariables, чтобы получить myVar и mySecondVar в качестве значений, например:

Set<List<String>> expressionVars = JEXL.createScript(expression).getVariables();

Что я хотел бы знать, так это то, что при наличии того же выражения я мог бы вызвать какой-то другой метод, который бы возвращал значения для этих переменных.Причина в том, что я хотел бы проверить ввод некоторых из этих значений.Я проверил документы и поиграл с классом JexlScript , но не могу найти элегантный способ сделать это.Поскольку JEXL уже выполняет работу по синтаксическому анализу моего выражения, было бы замечательно иметь возможность извлекать эту информацию и не нужно вручную анализировать мое выражение, чтобы получить эти значения.Нечто в строке script.getValue("myVar");, возвращающее 12345

1 Ответ

0 голосов
/ 20 декабря 2018

С JEXL вы оцениваете скрипт / выражение в заданном контексте (JexlContext), который содержит переменные и их значения.JexlContext предоставляет методы has и get, которые соответственно проверяют существование и получают значение переменных.В вашем случае вам нужно выяснить, какой у вас JexlContext (или должен быть);оттуда очень просто итерировать ваши переменные (извлеченные из вашего скрипта) и проверить их значения (из контекста).

См .: http://commons.apache.org/proper/commons-jexl/apidocs/org/apache/commons/jexl3/JexlContext.html http://commons.apache.org/proper/commons-jexl/apidocs/org/apache/commons/jexl3/JexlScript.html

...