2017-08-30 1 views
1

Il ne semble pas y avoir de fonction intégrée dans Freemarker pour générer un UUID aléatoire dans un modèle.Freemarker: générez UUID facilement

Le meilleur que je pouvais trouver était en créant un Freemarker method; Dans mon code Java 8, j'injecte la méthode pour une utilisation ultérieure dans le modèle. Exemple:

public String generate(Map<String, Object> data, String templateLocation) throws IOException, TemplateException { 
    try (StringWriter writer = new StringWriter()) { 
     Template template = configuration.getTemplate(templateLocation); 
     // UUID generation method injected in this line: 
     data.put("uuid", (TemplateMethodModelEx) (list) -> UUID.randomUUID()); 
     template.process(data, writer); 
     return writer.toString(); 
    } 
} 

Dans le modèle Freemarker je peux alors utiliser la méthode comme ceci:

${uuid()} 

est-il une solution plus pratique pour générer uuids à Freemarker?

Voici la ma dépendance Maven:

<dependency> 
    <groupId>org.freemarker</groupId> 
    <artifactId>freemarker</artifactId> 
    <version>2.3.25-incubating</version> 
    <scope>test</scope> 
</dependency> 

Répondre

2

Vous pouvez utiliser statics appeler randomUUID dans votre modèle:

${statics["java.util.UUID"].randomUUID()} 
2

Vous pouvez ajouter cette méthode à la configuration globalement avec Configuration.setSharedVariable(...).