2010-09-09 9 views

Répondre

1

Vous pouvez générer un entier aléatoire en Java et transmettre cet entier au modèle Freemarker.

2

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.

0

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()}