OGNL
# OGNL

Object-Graph Navigation Language (OGNL), creado por OGNL Technology, es un Lenguaje de Expresiones de código abierto para Java, el cual, mediante el uso de expresiones más simples que el amplio espectro que soporta Java, permite obtener y establecer propiedades (a través de métodos ya definidos getProperty y setProperty similares a los presentes en todos los JavaBeans) y la ejecución de métodos de clases Java.

## Aplicaciones

Algunas de las ventajas de OGNL sobre Java son:

* Las transformaciones entre tipos son más sencillas.
* Es un lenguaje de fuente de datos útil para mapear columnas de una tabla con su TableModel en Swing.
* Es un sustituto del lenguaje de obtención de propiedades usado en el paquete BeanUtils.

## Cadenas (chains)

Son la unidad fundamental de navegación. [Pueden contener:

* Nombres de propiedades.
* Llamadas a métodos.
* Índices de Array.

Ejemplo:

Se pasa a String la propiedad "name" de la que se toma el carácter de la posición 0 y se obtiene su valor numérico que se pasa a String nuevamente.

## Proyectos que usan OGNL

* WebWork
* Struts 2 (sucesor del anterior)
* Tapestry
* Spring Web Flow
* Apache Click
* NReco (.NET integration framework for lightweight MDD)
* op4j (extensión op4j-ognl) - implementación de interfaz fluida de Java.
* MyBatis - framework de mapeo SQL
* The Thymeleaf Template Engine - motor de plantillas Java XML/XHTML/HTML5
* Unitils - marco (framework) de testeo modular para Java
