新手配置Struts2时出现的一个莫名奇妙的错误信息
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<!-- 改成即正确
<filter-class>org.apache.struts2.dispatcher.FilterDispathcher</filter-class>
-->
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
struts.xml配置文件:
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="hello">
<result>/Hello.jsp</result>
</action>
</package>
错误信息:
信息: Velocity [debug] org.apache.velocity.exception.ResourceNotFoundException: WebappLoader : Resource 'VM_global_library.vm' not found.
但是奇怪的是项目可以运行,请高手解答
那请问这个VM是什么东西,项目里没用到这个啊 展开
很明显的错误呀,ResourceNotFoundException,找不到模板.vm文件
一般的解决方法就是 先指明模版所在路径,在velocity初始化时调用这个模板文件,这样就解决了问题。如果你指明了路径,那很有可能就是指明的路径不对,没搞清绝对路径和相对路径。
如果是这样:
template = this.getTemplate("VM_global_library.vm");
则VM_global_library.vm应该放到你的项目根目录
如果是:
template = this.getTemplate("abc/VM_global_library.vm");
welcome.vm放到你的项目的位置是 WEB-INF下的abc/VM_global_library.vm.
例子:
VelocityEngine ve = new VelocityEngine();
Properties properties = new Properties();
String basePath = "src/com/worthtech/app/test";
//这里需要这样写路径!!!
// 设置模板的路径
properties.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, basePath);
// 初始化velocity 让设置的路径生效
ve.init(properties);
/* next, get the Template */
Template t = ve.getTemplate("vm.vm");
/* create a context and add data */
VelocityContext context = new VelocityContext();
......