私は、Spring WebアプリケーションでVelocity経由でテンプレートから電子メールを作成します。今私はいくつかの値のHTMLエスケープする必要があります。 Velocity Escape Toolが見つかりました。しかし、私は設定が機能していない。SpringプロパティでVelocity Escape Toolを設定するには?
<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
<property name="resourceLoaderPath" value="classpath:/velocity/emailTemplates" />
<property name="preferFileSystemAccess" value="false" />
<property name="overrideLogging" value="true" />
<property name="velocityProperties">
<util:properties>
<prop key="input.encoding">UTF-8</prop>
<prop key="output.encoding">UTF-8</prop>
<prop key="tools.toolbox">application</prop>
<prop key="tools.application.esc">org.apache.velocity.tools.generic.EscapeTool</prop>
</util:properties>
</property>
</bean>
テンプレート(htmlEscapeTest.vm):
with escape: $esc.html($needEscape)
のTestCase:
@Test
public void testHtmlEscapingSupport() {
final String needEscape = "<test>";
ModelMap model = new ModelMap();
model.addAttribute("needEscape", needEscape);
String result = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, HTML_ESCAPING_TEMPLATE_FILE, model);
assertThat(result, StringContains.containsString("<test>"));
}
しかし、私がしようと試みている何
ので運賃は(春のapplicationContext.xmlを)ですテストに失敗しました。...got: "with escape: $esc.html($needEscape)"
誰かが私に間違っていることをヒントを与えることができますか?
は、私がテストでnew EscapeTool()
expliciteを追加する場合:
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を使用しています。
は、一般的に、あなたが速度を呼び出したいというのが私の経験をされています手動でコンテキストを設定する必要があります。問題のドキュメントへのリンクを提供しますか? – jtoberon
@jtoberon:http://velocity.apache.org/tools/devel/config.properties.htmlとhttp://velocity.apache.org/tools/devel/config.html – Ralph
どのバージョンのVelocityを使用していますか?元のエスケープツールのリンクは1.4、リンクは2.0になっています。 – jtoberon