Zahlen mit Velocity formatieren

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]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.