| ||||||||||||||
Resin 3.1 Documentation Examples Changes Overview Installation Configuration Quercus SOA/IoC JSP Servlets and Filters Admin (JMX) EJB Amber Security Performance Hessian XML and XSLT Third-party Troubleshooting/FAQ Introduction Compilation EL JSTL Directives Variables Actions Applications Schema for JSP-2.0 .tld files Velocity syntax JSP Templates FAQ |
The Apache Velocity project introduces an alternative syntax to the familiar JSP expressions and scriptlets. Resin's extension allows the use of Velocity-style syntax in JSP files. The Velocity-style syntax is transformed into JSTL standard tags. VelocityThe syntax is based on expressions like and scriptlets with . Because the alternative syntax avoids the brackets which fill JSP pages, it can make pages more readable and therefore more maintainable.Because Resin's Velocity-style syntax is transformed to the JSTL tag library, all JSTL expressions are allowed. <% int count; %> <h3>A sample <%= count %></h3> <% if ("foo".equals(request.getParameter("a"))) { %> <h3>Foo!</h3> <% } else { %> <h3>Bar!</h3> <% } %> The same JSP file could be written in Velocity-style as follows. The jsp:directive is required because JSP pages use strict JSP syntax by default. <jsp:directive.page velocity='true'/> \#{ int count; }# <h3>A sample ${'${'}count}</h3> #if ("foo" == params.a) <h3>Foo!</h3> #else <h3>Bar!</h3> #end The choice between the two is a matter of preferences. An advantage of the velocity style is that expressions and scriptlets avoid using brackets. In large pages, sorting out the HTML or XML from the JSP syntax can become confusing. Enabling velocity-style syntaxVelocity-style syntax can either be enabled on a per-JSP page with or in the web-app with the <jsp> tag:<jsp:directive.page velocity='true'/> ... <web-app> <jsp velocity='true'/> ... </web-app> expressionsExpressions are enclosed between "${'${'}" and "}", for example '${'${'}count}' and '${'${'}count + 15}'. The '${'${'}...}' syntax is equivalent to ' '.
scriptletsScriptlets use the '\#{ ... }#' syntax. This is entirely equivalent to '<% ... %>'. (Note, Velocity does not have this syntax because it creates its own language instead of escaping to Java.)
\#{ String key = request.getParameter("key"); if (key.equals("")) { response.sendError(500, "Bad key"); return; } }# ... if statementsThe velocity-style syntax directly supports if statements. The syntax is
The expressions can be any JSTL expression. The if statement is transformed into: <c:choose> <c:when test="${'${'}}"> ... </c:when> <c:when test="${'${'} }"> ... </c:when> <c:otherwise> ... </c:otherwise> </c:choose> foreach statementsThe velocity-style syntax directly supports iteration with a foreach statements.
This style of foreach is transformed into the following: <c:forEach items="${'${'}}" var=" "> ... </c:forEach> An example use might be the following: <jsp:page.directive velocity='true' import='java.lang.*'/> \#{ ArrayList list = new ArrayList(); list.add("foo"); list.add("foobar"); pageContext.setAttribute("list", list); }# #foreach (value in list) <li>${'${'}value} #end The velocity-style syntax also supports integer iteration. An example might be the following: <jsp:page.directive velocity='true'/> #foreach (value in [3..9]) <li>$value #end
|