example - OGNL Hello World en Java
struts2 action method (4)
Aquí hay un ejemplo de helloworld para jython (python que compila a java).
from ognl import Ognl, OgnlContext
from java.lang import String
exp = Ognl.parseExpression("substring(2, 5)")
print Ognl.getValue(exp, OgnlContext(), String("abcdefghj"))
Necesito usar OGNL para leer algunas propiedades del objeto Java. OGNL es algo completamente nuevo para mí. La documentación disponible para OGNL en el sitio web de OGNL es realmente confusa para mí.
Por lo tanto, cualquier persona puede proporcionar un ejemplo simple de HelloWorld
para usar OGNL (o cualquier enlace a un tutorial también es útil).
OGNL le permite acceder a los campos y métodos de objetos a través de expresiones de cadena, lo que resulta muy útil cuando pierde la arquitectura acoplada entre los datos y sus consumidores. Utiliza la reflexión bajo el capó, pero definitivamente acelera el desarrollo en comparación con un enfoque de reflexión pura.
Algunos ejemplos de una línea
System.out.println(Ognl.getValue("x", new Point(5,5)));
System.out.println(Ognl.getValue("size", new ArrayList<Object>()));
Documentation ya tiene una serie de expresiones ognl básicas y más avanzadas.
Prueba esto:
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);
Si la intención es solo leer las propiedades de un objeto, entonces PropertyUtils.getProperty (from commons-beanutils) puede ser suficiente. Sin embargo, si la intención es evaluar condicionales y demás, entonces Ognl puede beneficiarse.
Aquí está el mismo ejemplo de Dimensión con un booleano:
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