我正在使用Velocity和Spring。在Spring中,我使用VelocityViewResolver
与ContentNegotiatingViewResolver
配对。在大多数情况下,这很有效。唯一的问题是ContentNegotiatingViewResolver
使用许多不同的内容集查询VelocityViewResolver
(应该如此)。
当Velocity引擎找不到特定模板时,会产生类似于以下内容的错误:
2011-02-04 13:37:15,074 ERROR [http-8080-2] VelocityEngine:ResourceManager:无法在任何资源加载器中找到资源'foo.json.vm'。
这不太理想。理想情况下,如果找不到模板,则会产生警告或类似的东西。如果某个特定内容类型的模板不存在,我并不在意......因为这意味着该视图解析器不支持该内容类型。
我是否可以通过VelocityViewResolver
,VelocityView
或ContentNegotiatingViewResolver
来解决此错误?
答案 0 :(得分:2)
所以,我发现最好的方法是在我的日志配置文件中添加logger
语句,专门用于Velocity引擎(Velocity和我的项目都使用Commons日志记录)。我的记录器语句如下所示:
<logger name="org.apache.velocity.app">
<level value="OFF" />
</logger>
答案 1 :(得分:1)
这是因为您的ContentNegotiatingViewResolver
使用了VelocityViewResolver
。你可以通过给它一个空的(但非空)视图解析器列表来阻止它这样做。
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
...
<property name="viewResolvers">
<list />
</property>
</bean>
答案 2 :(得分:1)
问题将在Spring 3.2中修复,请参阅SPR-8640。完成此改进后,您将能够配置Velocity视图解析程序,以仅检查一次未解析的视图。