BBJSP Expression Language (Deprecated)
The BBJSP system is deprecated. For new development, use BBxServlet.
Description
In BBj 16.00 and higher, the BBJSP framework allows the embedding of expressions within a BBJSP Page to render data from various sources.
Developers can embed data directly into the generated HTML by way of the Expression Language. Expressions are placed within the expression tag like this:
${ expressions }
or:
<%= expressions %>
When you specify an attribute value in a tag, rather than using a string literal, you can use an expression to access other data. For example:
<c:set var='age' value='${foo}' />
The data within the expression is evaluated when the page is rendered to the client.
Read Data Structures
Data can also be extracted from BBj objects where the object defines
public fields. For example, lets assume you have an object called foo which has a field called woo,
you can access the value of foo.woo like this:
${foo['woo']}
This same syntax can be applied to Maps and additionally to the build-in
elements SESSION, PARAM,
HEADER and BBJSPSESSION
allowing you to do things like:
${session['attributeName']}<m:loadUser id="${param['username']}"/><c:out value="${header['user-agent']}"/><c:if test="${bbjspsession['isOK']}"/><c:if test="${bbjspsession['isOK']}"/>
In the examples above we're looking for a field in the PARAM
and HEADER objects but we specified the
field name using a literal expression, ie. it was a quoted string; but
what if you want to access the field dynamically? Well, you can do that
too like this:
<c:out value="${header[headerName]}"/>
Note the headerName was not enclosed
in quotes so it must first be created. You can see this working in the
Expression Language demo.
Direct vs Indirect references in Expressions
An expression takes the form of ${element[member]}
whereby the element should exist
in the BBjspPageContext and
should contain the named member.
The element could be a BBJSP
Widget from the page, a named BBjspHashMap
or some other Object. When referencing
a member you can either specify
name directly by enclosing it in quotes like this: ${foo["woo"]}
or indirectly like this: ${foo[woo]}.
When using an indirect reference, the name you use as the reference should
evaluate to a String stored in the BBjspPageContext
and your element must gave the following method defined to perform the
lookup:
public Object get(BBjString name)
Math in Expressions
EL expressions can use parentheses to group subexpressions. For example, ${(1 + 2) * 3} equals 9, whereas ${1 + (2 * 3)} equals 7.
Data can be extracted from records and applied in an expression calculation like this:
Credit remaining: <c:out value="${customer['limit'] - customer['balance']}"/>