OGNL expressions

Overview

The Object Graph Navigation Language (OGNL) is a notation for invoking bean methods in a chain-like fashion. If a message body contains a Java bean, you can easily access its bean properties using OGNL notation. For example, if the message body is a Java object with a getAddress() accessor, you can access the Address object and the Address object's properties as follows:

<language language="simple">${body.address}</language>
<language language="simple">${body.address.street}</language>
<language language="simple">${body.address.zip}</language>
<language language="simple">${body.address.city}</language>

Where the notation, ${body.address.street}, is shorthand for ${body.getAddress.getStreet}.

OGNL null-safe operator

You can use the null-safe operator, ?., to avoid encountering null-pointer exceptions, in case the body does not have an address. For example:

<language language="simple">${body?.address?.street}</language>

If the body is a java.util.Map type, you can look up a value in the map with the key, foo, using the following notation:

<language language="simple">simple("${body[foo]?.name}")</language>

OGNL list element access

You can also use square brackets notation, [k], to access the elements of a list. For example:

<language language="simple">${body.address.lines[0]}</language>
<language language="simple">${body.address.lines[1]}</language>
<language language="simple">${body.address.lines[2]}</language>

The last keyword returns the index of the last element of a list. For example, you can access the second last element of a list, as follows:

<language language="simple">${body.address.lines[last-1]}</language>