2009-04-24 8 views
16

Javaオブジェクトからいくつかのプロパティを読み込むためにOGNLを使う必要があります。 OGNLはまったく新しいものです。 OGNLの利用可能なドキュメントは、OGNLのウェブサイトは私にとって本当に混乱しています。OGNL Hello World in Java

誰でも簡単なOGNLの使用例(またはチュートリアルへのリンクも役立ちます)を提供することができます。

答えて

9

このお試しください:ここで

Dimension d = new Dimension(2,2); 

    String expressionString = "width"; 
    Object expr = Ognl.parseExpression(expressionString); 

    OgnlContext ctx = new OgnlContext(); 
    Object value = Ognl.getValue(expr, ctx, d); 

    System.out.println("Value: " + value); 
-1

jython(javaのにコンパイルのpython)のための例のHelloWorldです。

from ognl import Ognl, OgnlContext 
from java.lang import String 

exp = Ognl.parseExpression("substring(2, 5)") 

print Ognl.getValue(exp, OgnlContext(), String("abcdefghj")) 
7

意図は、次に、(コモンズ-々BeanUtilsから)PropertyUtils.getPropertyが十分であるオブジェクトからプロパティを読み出すことである場合。ただし、条件などを評価することが意図されている場合は、Ognlが役立ちます。ここで

は、ブールと同じ寸法の一例である:

Dimension d = new Dimension(); 
d.setSize(100,200) ;// width and height 

Map<String,Object> map = new HashMap<String,Object>(); 
map.put("dimension", d); 

String expression = "dimension.width == 100 && dimension.height == 200"; 
Object exp = Ognl.parseExpression(expression); 
Boolean b = (Boolean) Ognl.getValue(exp,map); 
// b would evaluate to true in this case 
0

OGNLは、あなたが失うデータ間のアーキテクチャを結合して、それが消費者だときに非常に便利になる文字列式を経て、オブジェクトのフィールドとメソッドにアクセスすることができます。それはフードの下での反射を使用していますが、純粋な反射アプローチと比較して、開発を確実にスピードアップします。

いくつかの1つのラインの例

System.out.println(Ognl.getValue("x", new Point(5,5))); 
System.out.println(Ognl.getValue("size", new ArrayList<Object>())); 

Documentationはすでに基本的な、より高度なOGNL式の数を持っています。