public interface VelocitySupport
dynamic security checkingand
templated mail messages. These are:
queuing, this value will be identical to $currentDate
DSRequest(though of course this is a server-side
DSRequestobject, so please also see the server-side Javadocs)
DSRequestthat caused the cache-sync request to be created
HttpServletRequest; it is an alternate form of
HttpServletRequest; it is an alternate form of
HttpSession; it is an alternate form of
DataSources. You access a dataSource by suffixing its name to the
$dataSourcesdesignation. For example,
$dataSources.supplyItemrefers to the DataSource object called "supplyItem". You can use this approach to execute any valid DataSource method. One especially useful method in this context is
hasRecord(fieldName, value)- see the server-side Javadocs for more details.
DataToolsobject, giving you access to all of that class's useful helper functions
Loggerinstance in category "velocityTemplate"
RPCManager(synonym to $rpc)
#if ($storedRecord.recordExists()) $value > $storedRecord.valInt #else true #end
com.isomorphic.velocity.ResponseDataWrapper; see the server-side Javadoc for details of that class. This context variable is particularly useful in a
TransactionChainingcontext, as you can optionally refer to the first or last DSResponse for a given DataSource or DataSource/operation type combination. This support is implemented by
com.isomorphic.velocity.ResponseDataHandler; see its server-side Javadoc for details. Note, this variable is only present if you have Power Edition or better
$responseData, you can optionally refer to the first or last response for a given DataSource or DataSource/operation type combination. See the server-side Javadoc for
com.isomorphic.velocity.ResponsesHandlerfor details. Note, this variable is only present if you have Power Edition or better
Mapinterface, so you can use the Velocity "property" shorthand notation to access them. The following usage examples show five equivalent ways to return the value of the session attribute named "foo":
$session.foo $session.get("foo") $session.getAttribute("foo") $sessionAttributes.foo $sessionAttributes.get("foo")In the case of
$servletRequest, the shorthand approach accesses the attributes - you need to use either
$servletRequest.getParameterto access parameters. These examples all return the value of the HTTP parameter named "bar":
$httpParameters.bar $httpParameters.get("bar") $servletRequest.getParameter("bar")When you use these Velocity variables in a
customSQLclause or SQL snippet such as a
whereClause, all of these template variables return values that have been correctly quoted and escaped according to the syntax of the underlying database. We do this because "raw" values are vulnerable to SQL injection attacks. If you need access to the raw value of a variable in a SQL template, you can use the $rawValue qualifier in front of any of the template variables, like this:
This also works for the $criteria and $values context variables (see
CustomQuerying for details of these variables). So:
$rawValueis only available in SQL templates. It is not needed in other contexts, such as
Transaction Chaining, because the value is not escaped and quoted in these contexts.
Warning: Whenever you access a template variable for use in a SQL statement, bear in mind that it is dangerous to use
$rawValue. There are some cases where using the raw value is necessary, but even so, all such cases are likely to be vulnerable to injection attacks. Generally, the presence of
$rawValue in a SQL template should be viewed as a red flag.
Finally, some example usages of these values. These
values clauses set "price" to a value extracted from the session, and "lastUpdated" to the date/time that this transaction started:
<values fieldName="price" value="$session.somePrice" />
<values fieldName="lastUpdated" value="$transactionDate" />
This whereClause selects some users based on various values passed in the criteria and as HTTP parameters:
<whereClause>department = $httpParameters.userDept AND dob >= $criteria.dateOfBirth</whereClause>
This whereClause selects some users based on various values obtained from the servletRequest's attributes, using a number of equivalent techniques for accessing the attributes:
<whereClause> department = $servletRequest.dept AND startDate >= $requestAttributes.dateOfBirth AND salary < $servletRequest.getAttribute("userSalary") </whereClause>
If you are using the Java server and would like to add your own Java objects to the server-side Velocity context, you can do so on a per-request basis via
DSRequest.addToTemplateContext() or globally by using Velocity Tools. The Velocity Tools mechanism is described here: http://velocity.apache.org/tools/releases/2.0/index.html. Just add the velocity tools jars to your deployment and place your tools.xml configuration file in the CLASSPATH (typically WEB-INF/classes).
Additionally, if you would like to modify the Velocity Engine defaults, you can provide your own
velocity.properties at the top level of the CLASSPATH (again, typically in WEB-INF/classes). These settings will overlay and override the defaults provided the velocity.properties file that ships inside the Velocity jar.