2017-05-01 3 views
0

Tenir compte de la déclaration de la variable java suivante:Est-il possible d'insérer du HTML directement dans le modèle de vélocité avec une variable java?

String s = "Please follow us on Facebook <a href=\"https://facebook.com/u/myuser\"> here</a>";

et considèrent le modèle de vitesse suivante:

<html> 
    <body> 
    ... 
    <div>$!s</div> 
    ... 
    </body> 
</html> 

Est-ce que ce travail comme prévu? Ou plutôt, est-il possible d'insérer du HTML directement dans le DOM via une variable java?

Je suppose que non - je suppose que les caractères HTML seraient échappés. Je travaille sur la création de certains modèles génériques pour réutiliser autant que possible, donc je vais probablement finir par tester moi-même, mais je me demandais si je pouvais gagner un peu de temps si quelqu'un sait au large de leur tête. De plus, je n'ai pas trouvé d'informations à ce sujet dans les documents de vélocité ou de stackoverflow déjà.

Répondre

2

Oui, c'est possible. Velocity n'échappe pas à HTML lui-même car il n'est pas uniquement destiné au HTML. Généralement, il ne sait pas quel type de texte vous générez avec.

Velocity comprend un outil d'échappement qui peut être utilisé pour échapper explicitement ce que vous avez besoin: https://velocity.apache.org/tools/1.4/generic/EscapeTool.html

Si vous allez utiliser Velocity pour générer HTML, je vous recommande uniquement des variables de chaîne d'utilisation et échapper à tous les les variables que vous lui passez pour la sortie. Si vous avez besoin de certaines variables pour ne pas être échappées, utilisez une liste blanche (c'est-à-dire la liste explicite des noms de variables que vous n'échappez pas dans votre escaper).

Cette approche permettra d'implémenter la politique 'escape by default'.

+0

parfait merci Roman – anon58192932

+1

@ anon58192932 Vous êtes les bienvenus! Si la réponse vous a aidé, veuillez l'accepter. –

+0

définitivement. J'attendais la période de récupération pour accepter une réponse. – anon58192932