溫馨提示:您的每一次轉(zhuǎn)載,體現(xiàn)了我寫此文的意義!!!煩請您在轉(zhuǎn)載時注明出處http://www.aygfsteel.com/sxyx2008/謝謝合作!!!

          雪山飛鵠

          溫馨提示:您的每一次轉(zhuǎn)載,體現(xiàn)了我寫此文的意義!!!煩請您在轉(zhuǎn)載時注明出處http://www.aygfsteel.com/sxyx2008/謝謝合作!!!

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks
          velocity使用基本來說比較簡單,但在加載模板時老出問題,很多初學(xué)者經(jīng)常會遇到找不到模板這種異常。本文就針對目前常用的三種模板加載方式做以說明。
          velocity官方幫助文檔
          其工程目錄結(jié)構(gòu)大致為
          點我下載示例代碼

          一、velocity默認的加載方式(文件加載方式)
          package com.velocity.test;

          import java.io.StringWriter;
          import java.util.Properties;

          import org.apache.velocity.VelocityContext;
          import org.apache.velocity.app.VelocityEngine;

          /**
           * 從文件中加載模板文件,即velocity默認的模板文件加載方式
           * 
          @author welcome
           *
           
          */
          public class LoaderFromFile {
              
              
          public static void main(String[] args) throws Exception{
                  
          //初始化參數(shù)
                  Properties properties=new Properties();
                  
          //設(shè)置velocity資源加載方式為file
                  properties.setProperty("resource.loader""file");
                  
          //設(shè)置velocity資源加載方式為file時的處理類
                  properties.setProperty("file.resource.loader.class""org.apache.velocity.runtime.resource.loader.FileResourceLoader");
                  
          //實例化一個VelocityEngine對象
                  VelocityEngine velocityEngine=new VelocityEngine(properties);
                  
                  
          //實例化一個VelocityContext
                  VelocityContext context=new VelocityContext();
                  
          //向VelocityContext中放入鍵值
                  context.put("username""張三");
                  context.put(
          "password""123456789");
                  context.put(
          "age""20");
                  context.put(
          "address""陜西西安"); 
                  context.put(
          "blog""http://blogjava.net/sxyx2008");
                  
          //實例化一個StringWriter
                  StringWriter writer=new StringWriter();
                  
          //從vm目錄下加載hello.vm模板,在eclipse工程中該vm目錄與src目錄平級
                  velocityEngine.mergeTemplate("vm/hello.vm""gbk", context, writer);
                  System.out.println(writer.toString());
                  
              }
          }
          二、從類路徑加載模板文件
          package com.velocity.test;

          import java.io.StringWriter;
          import java.util.Properties;

          import org.apache.velocity.VelocityContext;
          import org.apache.velocity.app.VelocityEngine;

          /**
           * 從class(類路徑)中加載模板文件
           * 
          @author welcome
           *
           
          */
          public class LoaderFromClass {
              
              
          public static void main(String[] args) throws Exception{
                  
          //初始化參數(shù)
                  Properties properties=new Properties();
                  
          //設(shè)置velocity資源加載方式為class
                  properties.setProperty("resource.loader""class");
                  
          //設(shè)置velocity資源加載方式為file時的處理類
                  properties.setProperty("class.resource.loader.class""org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
                  
          //實例化一個VelocityEngine對象
                  VelocityEngine velocityEngine=new VelocityEngine(properties);
                  
                  
          //實例化一個VelocityContext
                  VelocityContext context=new VelocityContext();
                  
          //向VelocityContext中放入鍵值
                  context.put("username""張三");
                  context.put(
          "password""123456789");
                  context.put(
          "age""20");
                  context.put(
          "address""陜西西安"); 
                  context.put(
          "blog""http://blogjava.net/sxyx2008");
                  
          //實例化一個StringWriter
                  StringWriter writer=new StringWriter();
                  
                  
          //從src目錄下加載hello.vm模板
                  
          //假若在com.velocity.test包下有一個hello.vm文件,那么加載路徑為com/velocity/test/hello.vm
                  velocityEngine.mergeTemplate("com/velocity/test/hello.vm""gbk", context, writer);
                  
                  
          //velocityEngine.mergeTemplate("hello.vm", "gbk", context, writer);
                  System.out.println(writer.toString());
              }
          }
          三、從jar文件中加載模板文件
          package com.velocity.test;

          import java.io.StringWriter;
          import java.util.Properties;

          import org.apache.velocity.VelocityContext;
          import org.apache.velocity.app.VelocityEngine;

          /**
           * 從jar文件中加載模板文件
           * 
          @author welcome
           *
           
          */
          public class LoaderFromJar {
              
              
          public static void main(String[] args) throws Exception{
                  
          //初始化參數(shù)
                  Properties properties=new Properties();
                  
          //設(shè)置velocity資源加載方式為jar
                  properties.setProperty("resource.loader""jar");
                  
          //設(shè)置velocity資源加載方式為file時的處理類
                  properties.setProperty("jar.resource.loader.class""org.apache.velocity.runtime.resource.loader.JarResourceLoader");
                  
          //設(shè)置jar包所在的位置
                  properties.setProperty("jar.resource.loader.path""jar:file:WebRoot/WEB-INF/lib/vm.jar");
                  
          //實例化一個VelocityEngine對象
                  VelocityEngine velocityEngine=new VelocityEngine(properties);
                  
                  
          //實例化一個VelocityContext
                  VelocityContext context=new VelocityContext();
                  
          //向VelocityContext中放入鍵值
                  context.put("username""張三");
                  context.put(
          "password""123456789");
                  context.put(
          "age""20");
                  context.put(
          "address""陜西西安"); 
                  context.put(
          "blog""http://blogjava.net/sxyx2008");
                  
          //實例化一個StringWriter
                  StringWriter writer=new StringWriter();
                  
          //從/WebRoot/WEB-INF/lib/vm.jar中加載hello.vm模板  vm.jar的目錄結(jié)構(gòu)為vm/hello.vm
                  velocityEngine.mergeTemplate("vm/hello.vm""gbk", context, writer);
                  System.out.println(writer.toString());
              }
          }

          請讀者朋友自行運行程序。
          點我下載示例代碼
          posted on 2010-11-11 13:29 雪山飛鵠 閱讀(12480) 評論(8)  編輯  收藏 所屬分類: velocity

          Feedback

          # re: velocity模板加載 2010-11-30 16:30 伏筆
          給你再補充一種變通的方式:
          pro.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, this.getClass().getResource("/").toString().replaceAll("^file:/", "").replaceAll("WEB-INF/classes","vm"));  回復(fù)  更多評論
            

          # re: velocity模板加載 2010-12-14 17:51 房子
          請教個文件加載的問題,
          velocity怎么也加載不到我硬盤上的模板,
          后臺報:
          嚴(yán)重: ResourceManager : unable to find resource 'C:\Downloads\template\modelNameInFileName.java.vm' in any resource loader.

          是我加載器的問題嗎
            回復(fù)  更多評論
            

          # re: velocity模板加載 2013-02-19 22:15 hell
          如果是Web項目,加載的模板在WEB-INF下,又該如何獲取模板呢?請教?  回復(fù)  更多評論
            

          # re: velocity模板加載 2013-02-19 22:29 hell
          @伏筆
          如果是Web項目,加載的模板在WEB-INF下,又該如何獲取模板呢?請教?@伏筆
            回復(fù)  更多評論
            

          # re: velocity模板加載 2013-02-20 13:21 coo
          @房子
          解決了?  回復(fù)  更多評論
            

          # re: velocity模板加載[未登錄] 2013-05-18 21:33 frank
          這個文章 寫得不錯,謝謝!  回復(fù)  更多評論
            

          # re: velocity模板加載[未登錄] 2013-11-20 16:32 你好
          請問如果模板被存儲到數(shù)據(jù)庫中取出后是流怎么加載??能不能直擊加載流???  回復(fù)  更多評論
            

          # re: velocity模板加載[未登錄] 2013-11-20 16:33 你好
          我郵箱744946073@qq.com謝謝大神了,我急用
            回復(fù)  更多評論
            

          主站蜘蛛池模板: 临汾市| 卢湾区| 平阳县| 林周县| 泸西县| 衢州市| 南皮县| 仁怀市| 紫阳县| 卢龙县| 昌黎县| 泰州市| 普安县| 历史| 本溪| 五台县| 青河县| 沙田区| 普安县| 万年县| 高淳县| 叶城县| 屏边| 绿春县| 德安县| 襄汾县| 天等县| 齐齐哈尔市| 赤壁市| 石柱| 通辽市| 蓬安县| 深水埗区| 巴东县| 吴忠市| 收藏| 广灵县| 诸暨市| 宁乡县| 确山县| 阳朔县|