15

アプリケーションで EL を使用したいと考えています。しかし、ハウツーが見つかりません。通常、実装していないインターフェイスが必要になります。

オブジェクトのマップがあり、Hello のような文字列式を文字${person.name}列として評価したいと考えています。

Commons EL、javax.el、OGNLなどを使用して、どうすればそれを達成できますか? スタンドアロン ライブラリである必要があります。

そして、私は Java を知ってい ます: J2EE の外側で EL を使用し、非 JSP (スタンドアロン) コンテキストで JSTL/JSP EL (式言語)を見てきました。それは私が探しているものではありません。

私が探しているのは、追加する依存関係の例と、次のパーサーを初期化する方法です。

private static String evaluateEL( String expr, Map<String, String> properties );

そして、私ができるようにします:

String greet = evaluateEL("Hello ${person.name}", 
     new HashMap(){{
       put("person", new Person("Ondra"));
     }}
);

そして、 NPEなどをスローする代わりに、たとえば""onなどの合理的な値を使用する必要があります。null

4

2 に答える 2

5

http://juel.sourceforge.net/guide/start.htmlで見つけました。まだ正確にはワンライナーではありませんが、近いです。

ExpressionFactory factory = new de.odysseus.el.ExpressionFactoryImpl();
de.odysseus.el.util.SimpleContext context = new de.odysseus.el.util.SimpleContext();
context.setVariable("foo", factory.createValueExpression("bar", String.class));
ValueExpression e = factory.createValueExpression(context, "Hello ${foo}!", String.class);
System.out.println(e.getValue(context)); // --> Hello, bar!

Maven デプス:

    <!-- Expression language -->
    <dependency>
        <groupId>de.odysseus.juel</groupId>
        <artifactId>juel-api</artifactId>
        <version>2.2.7</version>
    </dependency>
    <dependency>
        <groupId>de.odysseus.juel</groupId>
        <artifactId>juel-impl</artifactId>
        <version>2.2.7</version>
        <type>jar</type>
    </dependency>
于 2013-06-10T15:34:28.973 に答える