如何在jexl中运行if-else?

时间:2016-11-08 09:33:59

标签: jexl

这是3个INT参数:a,b,c。和1个字符串参数:d。 这是Java中的代码:

if (a>1) return c+d;
if (b<2) return c-d;
if (d.equals("123") return c*d;
return c+1;

如何将以上代码转换为Jexl? 我尝试了很多次,包括使用var。但它总是返回null。

1 个答案:

答案 0 :(得分:2)

您可能使用JEXL表达式而不是脚本。 您只能在表达式中使用Ternary条件。 if-else,return,for,while应该在脚本中使用:

JexlEngine jexl = new JexlBuilder().create();
JexlScript script = jexl.createScript(scriptText);
result = script.execute(context);

请参阅http://commons.apache.org/proper/commons-jexl/reference/syntax.html

来自javadoc:

  

表达式与脚本不同 - 它只是对单个表达式的引用,而不是对多个语句的引用。   这意味着表达式中不允许使用'if','for','while','var'和blocks'{'...'}'。

     

脚本是一些有效的JEXL语法,可以使用给定的一组JexlContext变量执行。   脚本是一组语句,以分号分隔。   语句可以是块(包含代码的花括号),控制语句,如if和while,以及表达式和赋值语句。