method example actionsupport ognl

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