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.

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,
        5.0%2Fdocs%2Fapi%2F”>System.getProperty("java.io.tmpdir"))
Velocity.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS,
        "org.apache.velocity.runtime.log.NullLogSystem")

def map = new 5.0%2Fdocs%2Fapi%2F”>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", 5.0%2Fdocs%2Fapi%2F”>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 5.0%2Fdocs%2Fapi%2F”>StringWriter()
Velocity.evaluate(context, writer, "formeltext", template)

println writer.toString()

This entry was posted in Java and tagged , . Bookmark the permalink.

Hinterlasse eine Antwort

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

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>