Как настроить Velocity Escape Tool с помощью Spring Properties?

Я создаю электронные письма из шаблонов с помощью Velocity в веб-приложении Spring. Теперь мне нужно, чтобы HTML экранировал некоторые значения. Я нашел Velocity Escape Tool. Но я не смог добиться работоспособности конфигурации.

Что я пробовал, так это (spring applicationContext.xml):


    
    
    
    
        
            UTF-8
            UTF-8
            application
            org.apache.velocity.tools.generic.EscapeTool
        
    

Шаблон (htmlEscapeTest.vm):

with escape: $esc.html($needEscape)

TestCase:

@Test
public void testHtmlEscapingSupport() {

    final String needEscape = "";

    ModelMap model = new ModelMap();
    model.addAttribute("needEscape", needEscape);
    String result = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, HTML_ESCAPING_TEMPLATE_FILE, model);
    assertThat(result, StringContains.containsString("<test>"));
}

Но тест не удался, ... получил: "with escape: $esc.html($needEscape)"

Может кто-нибудь подскажет, что я делаю не так?


Если я добавлю new EscapeTool() явно в тест:

VelocityContext velocityContext = new VelocityContext(model);
velocityContext.put("esc", new EscapeTool());
StringWriter writer = new StringWriter();
velocityEngine.mergeTemplate(HTML_ESCAPING_TEMPLATE_FILE, velocityContext, writer);
String result = writer.toString();

то он работает. Но насколько я понимаю документацию, инструменты должны быть настроены один раз в файле свойств.

Я использую Velocity Engine 1.7 и Velocity Tools 2.0.

12
задан Ralph 3 January 2012 в 15:22
поделиться