有没有一种方法来编码速度模板中的URL

问题描述:

请原谅我的无知,但我是Velocity的新手,并试图解决别人的问题。我需要在速度模板中编码一个URL。我创建了一个url,并作为查询字符串的一部分传递给用户创建的页面名称。此页面可以包含特殊字符,如ëðû。 URL可能看起来像http://foo.com/page1/jz?page=SpecialChars_ëðû有没有一种方法来编码速度模板中的URL

为了编码URL模板里面你可以使用:

$esc.url($myUrl)

这是EscapeTool的一部分。

注意: 除了速度罐之外,这需要使用velocity tools jar。 (它不会抛出异常,如果你不会有)。 此外,你可能想检查你的配置,如描述here

+0

有什么需要做的,以启用转义工具?我试着将它添加到我的模板中,如$ esc.url($ myParam),但它被当作文字处理。 – Brabster 2010-05-04 19:38:48

+0

你有没有启用任何工具?如何启用它们取决于你如何初始化速度引擎。 – serg 2010-05-04 19:51:46

我知道这是迟到。这是我今天如何解决这个问题。在类调用引擎,你可以说

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

现在在模板你可以说

$ esc.url($网址)

我只是不愿意使用速度中的EscapeTool进行网址编码。 因此,这是我得到了解决 -

可以使用$ httpUtil.decodeURL($ SITEURL)/$ httpUtil.encodeURL($ SITEURL)在速度URL编码

此外,您还可以在Velocity中使用$htmlUtil.escapeAttribute()转义text/html内容。

$htmlUtil.escapeAttribute($refSiteName)