2010-03-26 5 views
4

Excusez mon ignorance, mais je suis nouveau à Velocity et j'essaie de résoudre le problème de quelqu'un d'autre. J'ai besoin d'encoder une URL dans le template de vélocité. Je crée une URL et dans le cadre de la chaîne de requête je passe dans un nom de page un utilisateur créé. Cette page peut contenir des caractères spéciaux comme ëðû. L'URL ressemblerait http://foo.com/page1/jz?page=SpecialChars_ëðûExiste-t-il un moyen d'encoder une URL dans le modèle de vélocité

Répondre

3

Pour encoder l'URL dans un modèle que vous pouvez utiliser:

$esc.url($myUrl)

qui est une partie de EscapeTool.

Note: Ceci nécessite l'utilisation de velocity tools jar, en plus du pot de vitesse. (Il n'y aura pas d'exception si vous ne l'avez pas). En outre, vous pouvez vouloir vérifier votre configuration, comme décrit here

+0

Y at-il quelque chose que vous devez faire pour activer les outils d'échappement? J'ai essayé d'ajouter ceci à mon modèle, comme $ esc.url ($ myParam) mais il a été traité comme un littéral. – Brabster

+0

Avez-vous des outils activés? Comment les activer dépend de la façon dont vous initialisez votre moteur de vélocité. – serg

1

Je sais qu'il est tard. Voici comment j'ai résolu cela aujourd'hui. Dans la classe appelant le moteur, on pourrait dire

configure("esc",new EscapeTool()); 
context.put("url", "http://www.google.com"); 

maintenant dans le modèle que vous pourriez dire

esc.url de $ ($ url)

-1

J'étais tout simplement pas prêt à utilisez l'EscapeTool en vitesse pour un encodage d'URL. Par conséquent, voici la solution que je suis arrivé -

vous pouvez utiliser $ httpUtil.decodeURL ($ siteURL)/$ httpUtil.encodeURL ($ siteURL) pour l'URL Encodage dans Velocity

En outre, vous pouvez utilisez $htmlUtil.escapeAttribute() pour échapper du texte/html Contenu dans Velocity.

$htmlUtil.escapeAttribute($refSiteName)