当我使用Wildfly服务器在eclipse中本地运行项目时,我能够访问模板。但是,当我在我的prod服务器上运行模板时,它无法找到模板。
我的虚拟机模板位于一个包中: com.email.templates
我已经检查了WEB-INF文件夹,我可以看到模板位于:
glm()
我使用以下属性初始化VelocityEngine:
myapp.war\WEB-INF\classes\com\email\templates\
尝试获取模板时,我尝试了以下两种方法:
通过 org.springframework.ui.velocity.VelocityEngineUtils
Properties prop = new Properties();
prop.put(RuntimeConstants.RESOURCE_LOADER, "class");
prop.put("class.resource.loader.class", ClasspathResourceLoader.class.getName());
this.velocityEngine.init(prop);
通过 org.apache.velocity.app.VelocityEngine
Map<String, String> model = new HashMap<String, String>();
model.put("payload", "some payload");
String body = VelocityEngineUtils.mergeTemplateIntoString(this.velocityEngine , "/com/email/templates/my_template.vm", model);
答案 0 :(得分:0)
您的模板不在类路径中您应该在资源文件夹而不是$emits
中使用模板。这是工作我相信你需要web app
WebappResourceLoader
编辑:如果从Resources文件夹加载,请始终使用以下代码:
Properties props = new Properties();
props.setProperty("resource.loader", "webapp");
props.setProperty("myapp.resource.loader.class", "org.apache.velocity.tools.view.WebappResourceLoader");
props.setProperty("webapp.resource.loader.path", "classes\com\email\templates");
VelocityEngine engine = new VelocityEngine(props);