2010-09-08 13 views
3

Comment ajouter une nouvelle ligne dans le modèle de vélocité avec set? Cela ne fonctionne pas.Nouvelle ligne dans la directive set de vélocité

#(set $some = "$a \n $b") 

Imprime littéralement \ n.

Faire cela ne fonctionne pas non plus:

VelocityContext context = new VelocityContext(); 
context.put("esc", new EscapeTool()); 
Velocity.evaluate(context, writer, "LOG", template); 
+0

WTF est la vitesse? Vous voudrez peut-être donner plus de contexte. – leppie

+1

@leppie: Apache Velocity - c'est un moteur de template. @fastcodejava: Pourquoi avez-vous besoin d'un saut de ligne dans votre chaîne? Il suffit d'écrire le saut de ligne directement dans la sortie. –

Répondre

4

Vous pouvez utiliser $esc.n ou son synonyme $esc.newline du EscapeTool pour cela:

#set($some = $a + $esc.n + $b) 

Comment outils Init:

ToolManager velocityToolManager = new ToolManager(); 
velocityToolManager.configure("velocity-tools.xml"); 
VelocityContext context = new VelocityContext(velocityToolManager.createContext()); 

Vous pouvez obtenir la valeur par défaut de velocity-tools.x ml de here (il est également inclus dans le pot outils) et activer les outils dont vous avez besoin.

+1

@serg - Merci. Comment ajouter «EscapeTool» au contexte? J'ai fait 'context.put (" esc ", new EscapeTool())'. Cela n'a pas fonctionné. Ce n'est pas une application web, juste un code Java simple avec une macro de vitesse. – fastcodejava

+1

@fastcodejava Je l'ai ajouté à la réponse. – serg

+0

@serg - Je fais le code comme ci-dessus, pourquoi ça ne marche pas? – fastcodejava

3

Vous savez, dans les versions modernes de Velocity vous mettez juste le saut de ligne dans.

#set($haslinebreak = "this has 
a line break")