How to get a random integer in a Freemarker template?

Is it possible to generate a random integer in the Freemarker template?

+3
source share
4 answers

Freemarker does not currently provide a random number generator. You can implement a naive random number generator using time (.now) as a seed, but it should never be an important part of your program.

+2
source

Here is the simplest implementation of random generation using time, as Kaihadrin suggests. I did not have time to check if it actually works, but it can help someone.

http://v01ver-howto.blogspot.fi/2011/07/howto-generate-random-integer-in.html

+2

Java Freemarker.

+1

Another option would be to create your own Freemarker method and introduce it into the data model.

Here is an example of how to do this in Java 8:

public String generate(Map<String, Object> data, String templateLocation) throws IOException, TemplateException {
    try (StringWriter writer = new StringWriter()) {
        Template template = configuration.getTemplate(templateLocation);
        data.put("uuid", (TemplateMethodModelEx) (list) -> UUID.randomUUID());
        Random r = new Random();
        // Adding method for generation of random number
        data.put("randomNumber", (TemplateMethodModelEx) (list) -> r.nextInt(200));
        template.process(data, writer);
        return writer.toString();
    }
}

In the Freemarker template, you can use this method using:

${randomNumber()}
0
source

Source: https://habr.com/ru/post/1764063/


All Articles