Tôi tạo e-mail từ các mẫu qua Velocity trong một ứng dụng web mùa xuân. Bây giờ tôi cần phải thoát HTML MỘT SỐ giá trị. Tôi tìm thấy Velocity Escape Tool. Nhưng tôi đã không nhận được cấu hình làm việc.Làm thế nào để cấu hình Velocity Escape Tool với Spring Properties?
Những gì tôi đã tryed nên giá vé là (mùa xuân applicationContext.xml):
<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>
Template (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>"));
}
Nhưng Thử nghiệm không thành công, ...got: "with escape: $esc.html($needEscape)"
Ai có thể cho tôi một gợi ý những gì tôi đang làm sai?
Nếu tôi thêm new EscapeTool()
explicite trong các thử nghiệm:
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();
sau đó nó đang làm việc. Nhưng theo như tôi hiểu tài liệu, các công cụ sẽ được cấu hình một lần trong tệp thuộc tính.
Tôi đang sử dụng Velocity Engine 1.7 và Velocity Tools 2.0.
Nói chung nó được kinh nghiệm của tôi rằng khi bạn muốn gọi vận tốc trực tiếp, sau đó bạn phải thiết lập ngữ cảnh theo cách thủ công. Bạn có cung cấp liên kết đến tài liệu được đề cập không? – jtoberon
@jtoberon: http://velocity.apache.org/tools/devel/config.properties.html và http://velocity.apache.org/tools/devel/config.html – Ralph
Bạn đang sử dụng phiên bản Velocity nào? Liên kết Escape Tools ban đầu của bạn là 1.4 và các liên kết này là 2.0. – jtoberon