Est-il possible de générer un entier aléatoire dans le modèle Freemarker?Comment obtenir un entier aléatoire dans le modèle Freemarker?
Répondre
Vous pouvez générer un entier aléatoire en Java et transmettre cet entier au modèle Freemarker.
Freemarker ne fournit pas de générateur de nombres aléatoires pour le moment. Vous pouvez implémenter un générateur de nombres aléatoires naïfs en utilisant l'heure (.now) comme une graine, mais cela ne devrait jamais être une partie critique de votre programme.
Voici une implémentation simple de la génération aléatoire en utilisant le temps, comme le suggère Kayhadrin. Je n'ai pas eu le temps de tester si cela fonctionne réellement, mais peut être utile à quelqu'un.
http://v01ver-howto.blogspot.fi/2011/07/howto-generate-random-integer-in.html
Une autre option serait en fait de créer votre propre Freemarker method et l'injecter dans le modèle de données.
Voici un exemple sur la façon de le faire en 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();
}
}
Dans le modèle Freemarker vous pourrez alors utiliser cette méthode en utilisant:
${randomNumber()}