7 votes

Les directives de vélocité ajoutent aussi des espaces blancs ?

Je viens d'apprendre qu'avec apache velocity les directives s'ajoutent également aux espaces blancs.

Donc, par exemple :

#foreach ($record in $rows)
#foreach($value in $record)
$value  
#end

#end

Avec quelque chose comme ça, je finis par avoir des lignes supplémentaires pour le #foreach les déclarations, les #end déclarations, etc.

Ce n'est pas ce que je veux, alors j'ai découvert que je pouvais bloquer les commentaires à la fin des lignes comme ceci :

#foreach ($record in $rows)#*
*##foreach($value in $record)#*
*#$value    #*
*##end

#end

Mais c'est assez laid à lire. Existe-t-il un moyen d'indiquer au moteur de vélocité de ne pas formater mes directives ?

Peut-être que je fais quelque chose de mal ?

Gracias.

4voto

Edd Points 2470

Je pense que vous êtes coincé avec elle (voir Velocity Whitespace Gobbling article) bien que les commentaires de ligne seraient un peu plus ordonnés :

#foreach ($record in $rows)##
#foreach($value in $record)##
$value    ##
#end

#end

Ou bien vous pouvez tout condenser sur une seule ligne :

#foreach($record in $rows)#foreach($value in $record)${value}#{end}#{end}

1voto

Esko Points 15578

C'est en fait commun à presque tous les langages de modélisation et le raisonnement vient directement du traitement simplifié. Considérons l'exemple suivant ( Il s'agit en fait du GSP utilisé par Grails, mais l'idée est la même. ):

<g:each var="x" in="exes">
    ${x.y}
</g:each>

La façon dont cela est traité est que d'abord une balise ( ou dans le cas de Velocity, la directive ) est identifié. Comme la balise/directive elle-même contient des instructions pour le traitement du corps de la balise, les marques de la balise/directive sont supprimées et tout le contenu situé immédiatement après la marque de début et immédiatement avant la marque de fin est utilisé comme cible du traitement. Cela inclut tous les espaces blancs, car le nettoyage préalable de la sortie serait beaucoup plus difficile.

Bien sûr, cela ne signifie pas que vous ne pouvez pas le faire, comme le souligne Edd, ou que ce serait le choix de conception le plus judicieux en premier lieu, mais parfois, faire les choses plus simplement est plus important que de générer un beau balisage - après tout, la plupart, sinon tous les processeurs de balisage ne se soucient pas vraiment de savoir si vous avez <p>some\ncontent</p> o <p>some\n\n\n\t\tcontent</p> .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X