Question

Je dois utiliser OGNL pour la lecture de certaines propriétés de l'objet Java. OGNL est tout à fait nouvelle chose à moi. La documentation disponible pour OGNL est le site Web de OGNL est vraiment déroutant pour moi.

Donc, toute personne peut fournir un exemple simple de HelloWorld pour l'utilisation OGNL (ou tout lien vers un tutoriel est également utile).

Était-ce utile?

La solution

Essayez ceci:

    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);

Autres conseils

Si l'intention est seulement de lire les propriétés d'un objet puis PropertyUtils.getProperty (de la Chambre des communes-BeanUtils) peut suffire. Toutefois, si l'intention est d'évaluer et conditionals tel, puis OGNL peut bénéficier.

Voici le même exemple de dimension avec un booléen:

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

OGNL vous permet d'accéder à des champs et des méthodes des objets via des expressions de chaîne qui devient très utile lorsque vous avez lose l'architecture couplée entre les données et il est des consommateurs. Il utilise la réflexion sous le capot mais accélère définitivement le développement par rapport à une approche purement de réflexion.

Quelques exemples d'une ligne

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

Documentation a déjà un certain nombre de base et plus avancée expressions OGNL.

Voici un exemple helloworld Jython (python qui compile en java).

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

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

print Ognl.getValue(exp, OgnlContext(), String("abcdefghj"))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top