Das folgende Groovy-Skript zeigt, wie man innerhalb eines Velocity-Templates Zahlen formatiert. Zum Einsatz kommt NumberTool. Die Klasse ist Bestandteil der Velocity-Tools, welche in einem eigenen Projekt gepflegt werden und ersetzt die frühere VelocityFormatter.
[code lang=“groovy“]package bob.pokolm.skate
import org.apache.velocity.app.Velocity
import org.apache.velocity.VelocityContext
import org.apache.velocity.tools.generic.NumberTool
import org.apache.velocity.runtime.RuntimeConstants
import groovy.sql.Sql
Velocity.setProperty(RuntimeConstants.RUNTIME_LOG,
System.getProperty(„java.io.tmpdir“))
Velocity.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS,
„org.apache.velocity.runtime.log.NullLogSystem“)
def map = new HashMap()
def select = „select value from table“
def sql = Sql.newInstance(
„jdbc:oracle:thin:@1.2.3.4:1521:db“,
„username“, „password“,
„oracle.jdbc.driver.OracleDriver“)
sql.eachRow(select) {
map.put(„nnn“, it.value)
}
Velocity.init()
def context = new VelocityContext()
context.put(„number“, new NumberTool())
context.put(„werte“, map)
context.put(„locale“, Locale.GERMANY); // …oder Locale.UK
def template = „““\
\$werte.nnn –> \
0.000: \$number.format(\“0.000\“, \$werte.nnn, \$locale) | \
currency: \$number.format(\“currency\“, \$werte.nnn, \$locale) | \
percent: \$number.format(\“percent\“, \$werte.nnn, \$locale)\
„““
def writer = new StringWriter()
Velocity.evaluate(context, writer, „formeltext“, template)
println writer.toString()[/code]