1

すべての javax.el juel 専門家に電話する :-)

JUEL を使用して、純粋な Java コンテキストで式を評価したいと考えています。これらの式は通常、数学的なものであり、UI を介してユーザーによって提供されます。追加された側面は、これらの式が構成の一部であり、後で別のプロセスの一部として評価されるだけであるということです。また、式で使用される変数値は、このプロセスの一部として後でのみ使用できます。そのため、式の作成時にユーザーに基本的な検証を提供して、ユーザーが自分の式が評価時に失敗しないことを認識できるようにしたいと考えています。

以前はこれに Janino を使用していましたが、これを JUEL に置き換えています。はるかに高速です (そして、通過するために多くの評価があり、スループットが重要であるなど)。また、JUEL はまったく同じ式構文で動作します。つまり、バックエンドにプラグインでき、下位互換性があります。${..}(古い Janino 式を追加するだけです。

ただし、JUEL には 1 つの問題があります。使用されている式を評価する前に検証する方法はありますか?

つまり、次のようなものです:

context.getVariableMapper().setVariable("a",expressionFactory.createValueExpression(new Double(1), double.class));

context.getVariableMapper().setVariable("b", expressionFactory.createValueExpression(new Double(2), double.class));

ValueExpression expression = expressionFactory.createExpression("${a+b}", double.class, context);

Object result = expression.getValue(context);

を実行するとprintln(result)、3 が正しく出力されます。

Janino を使用すると、式 a+b をクックできますが、それが不正な形式であるか、不正な戻り値の型 (つまり double ではない) を返す場合、例外が発生します。次に、これを使用してその場でユーザー入力を検証し、構成を保存するなどの前にユーザーにエラーを修正させることができます。

JUELでこれを行う方法はありますか?または、別のアプローチを知っている人はいますか?

ありがとうございました、

ルーカス

4

2 に答える 2

0

私はまったく同じ問題を抱えていました。最終的に、Juel に独自の拡張機能を追加することになりました。それを実行する前に(私が見つけることができる限り)すべての可能な側面をチェックする新しい検証方法があります。私はジュエルに延長を申し出ましたが、彼らはジュエルを標準に最小限に抑える方が良いと考えました. いつかどこかでシェアしようと思っていました。必要があれば、もっと早くやろうという気になるかもしれません。

-- サイード

于 2013-10-02T08:46:25.393 に答える