A Formatter can be passed to the template and the number can be parsed using that formatter.
$formatter.format( $number )
The following example creates a template contenaing 2 variables, first the formatter with the name formatter, that corresponds to the locale of the user. Then the number to format that is in the number variable.
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.text.NumberFormat;
import java.util.Locale;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
public class VelocitySimple6 {
public static void main(String[] argv) {
// Source directory
String sourceDirectory = "V:/tmp/velocity/";
// Create the velocity engine
VelocityEngine ve = new VelocityEngine();
ve.setProperty("resource.loader", "file");
ve.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader");
ve.setProperty("file.resource.loader.path", sourceDirectory);
ve.setProperty("file.resource.loader.cache", true);
ve.setProperty("file.resource.loader.modificationCheckInterval", "2");
ve.init();
// Get the template
Template t = ve.getTemplate("example6.vm");
// Create the
VelocityContext context = new VelocityContext();
context.put("formatter", NumberFormat.getNumberInstance(Locale.ENGLISH));
final double doubleToFormat = 1000000.01;
context.put("number", doubleToFormat);
try {
// Create the output file
Writer out = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream(new File(sourceDirectory + "example6.txt")), "UTF8"));
t.merge(context, out);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
The unformatted number is: $number The formatted number is: $formatter.format( $number )
The unformatted number is: 1000000.01 The formatted number is: 1,000,000.01