2016-11-08 5 views
1

ここには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を返します。

答えて

2

おそらく、スクリプトの代わりに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や式や代入文などの制御ステートメントにすることができます。

関連する問題