Java Velocity问题-与Spring MVC一起使用时ResourceNotFoundException
我将SpringMVC用于我的web应用程序,并集成Velocity用于模板化我的电子邮件 当它试图发送我的电子邮件时,我收到以下500个错误Java Velocity问题-与Spring MVC一起使用时ResourceNotFoundException,java,spring,velocity,Java,Spring,Velocity,我将SpringMVC用于我的web应用程序,并集成Velocity用于模板化我的电子邮件 当它试图发送我的电子邮件时,我收到以下500个错误 org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource '/WEB-INF/velocity/registrationEmail.vm' 我知道这意味着什么,我需要做什么,但我知道我一定是做错了什么,我不明白为什么它找不到我的.vm文件 我已经在
org.apache.velocity.exception.ResourceNotFoundException:
Unable to find resource '/WEB-INF/velocity/registrationEmail.vm'
我知道这意味着什么,我需要做什么,但我知道我一定是做错了什么,我不明白为什么它找不到我的.vm文件
我已经在applicationContext.xml文件中配置了velocity,如下所示,但我相信我可能遗漏了velocity查找该文件所需的必要属性
<bean id="velocityEngine"
class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
<property name="velocityProperties">
<value>
resource.loader=class
class.resource.loader.class=
org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
</value>
</property>
</bean>
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/WEB-INF/velocity/"/>
</bean>
resource.loader=class
class.resource.loader.class=
org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
我相信这可能是我需要做一些更改/添加的地方,但我不确定
我的模板文件的路径是WEB-INF/velocity/templateName.vm
在我的控制器中使用VelocityEngineBean时,我指定了这一点,如下所示
String text = VelocityEngineUtils.mergeTemplateIntoString(
velocityEngine, "/WEB-INF/velocity/registrationEmail.vm", test);
String text=VelocityEngineUtils.mergeTemplateIntoString(
velocityEngine,“/WEB-INF/velocity/registrationEmail.vm”,测试);
在build.xml文件中是否需要执行某些操作以确保它能够找到我的模板文件?我遇到了类似的问题,根本原因是使用了绝对路径。因此,请不要使用前导的
“/”
:
String text = VelocityEngineUtils.mergeTemplateIntoString(
velocityEngine, "WEB-INF/velocity/registrationEmail.vm", test);
我也遇到过类似的问题,根本原因是使用绝对路径。因此,请不要使用前导的
“/”
:
String text = VelocityEngineUtils.mergeTemplateIntoString(
velocityEngine, "WEB-INF/velocity/registrationEmail.vm", test);
我认为问题在于WEB-INF不是类路径的一部分。您不能期望
ClasspathResourceLoader
找到不在类路径中的内容
WEB-INF/classes和WEB-INF/lib中的所有JAR都在类路径中。尝试将包含.vm文件的文件夹移动到WEB-INF/classes下,看看是否有帮助
最好的办法是遵循Spring文档:
我认为问题在于WEB-INF不是类路径的一部分。您不能期望
ClasspathResourceLoader
找到不在类路径中的内容
WEB-INF/classes和WEB-INF/lib中的所有JAR都在类路径中。尝试将包含.vm文件的文件夹移动到WEB-INF/classes下,看看是否有帮助
最好的办法是遵循Spring文档:
这很痛苦。如果你把它放在类路径中,那么开发就成了地狱,因为每次你修改velocity模板时,servlet容器都会重新加载webapp 我建议使用org.apache.velocity.tools.view.WebappResourceLoader,它不要求文件位于类路径中,并且允许您执行相对包含,从而使开发更加容易
你也可以查看我的帖子:这很痛苦。如果你把它放在类路径中,那么开发就成了地狱,因为每次你修改velocity模板时,servlet容器都会重新加载webapp 我建议使用org.apache.velocity.tools.view.WebappResourceLoader,它不要求文件位于类路径中,并且允许您执行相对包含,从而使开发更加容易
您也可以查看我的帖子:假设您将*.vm文件归档到*.jar文件中。并将其放入WEB-INF/lib中 然后在bean配置中包含以下代码段,使其对VelocityEngineUtils可见 好好工作吧
类路径:com/test/mail
您可以给出
..
块之间的每个资源位置(即,应该在类路径中)的内容。假设您将*.vm文件归档到*.jar文件中。并将其放入WEB-INF/lib中
然后在bean配置中包含以下代码段,使其对VelocityEngineUtils可见
好好工作吧
类路径:com/test/mail
您可以给出
…
块之间的每个资源位置(即,应该在类路径中)的内容。我尝试了这个,但仍然找不到.vm文件,我想知道我的错误可能在哪里…我尝试了这个,但仍然找不到.vm文件,我想知道我的错误在哪里…我试着把我的/velocity目录放在/WEB-INF/classes/velocity下,但它仍然给了我同样的问题。有没有更好的方法来实现这一点或指定速度特性?您给出了什么路径?应该是“velocity/*.vm”。如果是在WEB-INF/classes中,您不需要前缀。很好,这很有效,我很好奇,这是一种正确的方法吗(将velocity模板保存在classes目录中)?我在这个话题上没有看到太多,但我从多个渠道听到了相同的做法。当然,为什么不可以呢?您只需将模板放在类路径中,资源加载程序可以在其中找到它们。你担心的潜在问题是什么?我不担心任何问题,我只是没有太多的经验,也没有把任何东西都放在类目录中,但它工作得很好,我感谢你的帮助!我尝试将/velocity目录放在/WEB-INF/classes/velocity下,但它仍然给了我同样的问题。有没有更好的方法来实现这一点或指定速度特性?您给出了什么路径?应该是“velocity/*.vm”。如果是在WEB-INF/classes中,您不需要前缀。很好,这很有效,我很好奇,这是一种正确的方法吗(将velocity模板保存在classes目录中)?我在这个话题上没有看到太多,但我从多个渠道听到了相同的做法。当然,为什么不可以呢?您只需将模板放在资源loa所在的类路径中