ここには3つのINTパラメータがあります:a、b、c。 1文字列パラメータ:d。ここ は、Javaのコードです:jexlでif-elseを実行するにはどうすればよいですか?
if (a>1) return c+d;
if (b<2) return c-d;
if (d.equals("123") return c*d;
return c+1;
JEXLに上記のコード有効にする方法は? 私は何度も試してみました。しかし、常にnullを返します。
ここには3つのINTパラメータがあります:a、b、c。 1文字列パラメータ:d。ここ は、Javaのコードです:jexlでif-elseを実行するにはどうすればよいですか?
if (a>1) return c+d;
if (b<2) return c-d;
if (d.equals("123") return c*d;
return c+1;
JEXLに上記のコード有効にする方法は? 私は何度も試してみました。しかし、常にnullを返します。
おそらく、スクリプトの代わりにJEXL式を使用します。 Ternaryの条件式でのみ使用できます。 のif-else、の戻り、スクリプトで使用されるべきである:
JexlEngine jexl = new JexlBuilder().create();
JexlScript script = jexl.createScript(scriptText);
result = script.execute(context);
はjavadocをよりhttp://commons.apache.org/proper/commons-jexl/reference/syntax.html
を参照してください:
式はスクリプトとは異なっている - それは単にです複数のステートメントではなく、単一の式への参照。 これは 'if'、 'for'、 'while'、 'var'およびブロック '{' ... '}'は式では使用できないことを意味します。
スクリプトは、JexlContext変数のセットで実行される有効なJEXL構文です。 スクリプトはセミコロンで区切られた文のグループです。 ステートメントは、ブロック(コードを含む中括弧)、ifやwhileや式や代入文などの制御ステートメントにすることができます。