NutzCN Logo
问答 nutzboot中使用velocity的问题
发布于 1651天前 作者 hujun82589167 1266 次浏览 复制 上一个帖子 下一个帖子
标签:

用nb打包成jar之后,在resource下放了一个velocity的模板文件,试了各种方法用无法读取了这个模板文件。
读取方式如下:

 //初始化参数
        Properties properties=new Properties();
        //设置velocity资源加载方式为class
        properties.setProperty("resource.loader", "class");
        //设置velocity资源加载方式为file时的处理类
        properties.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
        //实例化一个VelocityEngine对象
        VelocityEngine velocityEngine=new VelocityEngine(properties);
        //初始化Velocity
//        VelocityEngine velocityEngine = new VelocityEngine();
        velocityEngine.init();
//创建context
        VelocityContext context = new VelocityContext();
//添加数据
        context.put("body", body);
//获取模版
        Template template = Velocity.getTemplate("json.vm","utf-8");

看了Velocity.getTemplate的源码是从classpath下去寻找,故意在nb里造一个WEB-INF/classes文件夹,把json.vm这个模板文件放下面用nb打包后也不行,请问有什么办法吗?

4 回复

嗯?这是自行集成?

我不用velocity做页面模板,我只是用velocity做一个代码生成模板

搞定了,对比了Hamming(tonyyule)的代码,发现是velocity初始化上不一样,留下来给需要的人,应该是:

//初始化参数
        Properties p=new Properties();
        // 加载classpath目录下的vm文件
        p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
        // 定义字符集
        p.setProperty(Velocity.ENCODING_DEFAULT, "UTF-8");
        p.setProperty(Velocity.OUTPUT_ENCODING, "UTF-8");
        // 初始化Velocity引擎,指定配置Properties
        Velocity.init(p);
添加回复
请先登陆
回到顶部