Язык шаблонов скорости: Как импортировать EscapeTool - PullRequest
0 голосов
/ 22 декабря 2019

Я пытаюсь использовать unurl для моего шаблона отображения.

  $url                         -> hello here & there
  $esc.url($url)               -> hello+here+%26+there
  $esc.unurl($esc.url($url))   -> hello here & there

Я написал следующий шаблон сопоставления, но $esc.unurl([...]) не работает. Я не мог понять, как это исправить. Одной из причин может быть то, что мне не хватает импорта, но я не знаю, как правильно импортировать EscapeTool.

#set($httpPost = $input.path('$').split("&"))
{
#foreach( $kvPair in $httpPost )
 #set($kvTokenised = $kvPair.split("="))
 #if( $kvTokenised.size() > 1 )
   "$kvTokenised[0]" : "$esc.unurl($kvTokenised[1])"#if( $foreach.hasNext ),#end
 #else
   "$kvTokenised[0]" : ""#if( $foreach.hasNext ),#end
 #end
#end
}

1 Ответ

0 голосов
/ 22 декабря 2019

Вам необходимо добавить его в tools.xml

Пример конфигурации tools.xml (если вы хотите использовать это с VelocityView):

<tools>
  <toolbox scope="application">
    <tool class="org.apache.velocity.tools.generic.EscapeTool"/>
  </toolbox>
</tools>

Или добавьте его в контексте скорости, используя код :

ModelMap model = new ModelMap();
model.put("esc", new EscapeTool());
VelocityEngineUtils.mergeTemplateIntoString(
            velocityEngine, "template.vm", "UTF-8", model)
...