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