Давайте предположат a
, b
представляют собой целые числа, а также домашние животные имеют типа HashMap<String, Integer>
MVEL Выражение не оценки должным образом, когда предварительно скомпилированные
Когда я предварительную компиляцию ниже выражение, то pets.containsKey(\"Dogs\")
узла является нулевым внутри объекта CompiledExpression.
CompiledExpression compiledExpression = new ExpressionCompiler("a > 0 && b > 0 && pets.containsKey(\"Dogs\")").compile();
return (boolean) MVEL.executeExpression(compiledExpression, params);
Однако, когда я делаю что-то вроде
boolean res = (boolean) MVEL.eval("a > 0 && b > 0 && pets.containsKey(\"Dogs\")", params);
Это прекрасно работает, и я получаю соответствующий ответ обратно.
Есть ли способ прекомпилировать выражение, содержащее объект как хэш-карту?
вместо жестких параметров кодирования, вы можете использовать 'Map', пожалуйста, смотрите ответ отправил –
Saravana