velocity使用中出现org.apache.velocity.exception.ResourceNotFoundException的解决办法

在使用velocity过程中,总是出现.ResourceNotFoundException异常,找不到模板.vm文件。现公布解决办法:

import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;
import java.io.StringWriter;
import java.util.Properties;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
public class VelocityTest {

public static void main(String[] args) {
try {
/* first, get and initialize an engine */
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();
context.put("name", "DingDangXiaoMa");
context.put("site", "http://www.sun.com");
/* now render the template into a StringWriter */
StringWriter writer = new StringWriter();
t.merge(context, writer);
/* show the World */
System.out.println(writer.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}



[img]http://dl.iteye.com/upload/attachment/269975/dd82150c-744b-3c64-93a8-f2771876c969.jpg[/img]

研究velocity源码:

public synchronized InputStream getResourceStream(String name)
throws ResourceNotFoundException
{
InputStream result = null;

if ((name == null) || (name.length() == 0))
{
throw new ResourceNotFoundException("No template name provided");
}

try
{
ClassLoader classLoader = super.getClass().getClassLoader();
result = classLoader.getResourceAsStream(name);
}
catch (Exception fnfe)
{
throw new ResourceNotFoundException(fnfe.getMessage());
}

return result;
}



关键是
ClassLoader classLoader = super.getClass().getClassLoader();
result = classLoader.getResourceAsStream(name);
这两行代码。是在你的Classpath下去load, 所以必须保证vm文件存在于WEB-INF/classes 下
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值