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

          雪山飛鵠

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

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

          一、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{
                  
          //初始化參數
                  Properties properties=new Properties();
                  
          //設置velocity資源加載方式為file
                  properties.setProperty("resource.loader""file");
                  
          //設置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{
                  
          //初始化參數
                  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);
                  
                  
          //實例化一個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{
                  
          //初始化參數
                  Properties properties=new Properties();
                  
          //設置velocity資源加載方式為jar
                  properties.setProperty("resource.loader""jar");
                  
          //設置velocity資源加載方式為file時的處理類
                  properties.setProperty("jar.resource.loader.class""org.apache.velocity.runtime.resource.loader.JarResourceLoader");
                  
          //設置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的目錄結構為vm/hello.vm
                  velocityEngine.mergeTemplate("vm/hello.vm""gbk", context, writer);
                  System.out.println(writer.toString());
              }
          }

          請讀者朋友自行運行程序。
          點我下載示例代碼
          posted on 2010-11-11 13:29 雪山飛鵠 閱讀(12466) 評論(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"));  回復  更多評論
            

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

          是我加載器的問題嗎
            回復  更多評論
            

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

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

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

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

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

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

          主站蜘蛛池模板: 本溪市| 黑山县| 万源市| 广德县| 将乐县| 元江| 滨海县| 巩义市| 汕头市| 阆中市| 昌吉市| 满城县| 麻栗坡县| 怀柔区| 绥化市| 大同市| 金沙县| 肥东县| 成安县| 上思县| 肇州县| 吴旗县| 平塘县| 三河市| 荔浦县| 西宁市| 肇州县| 曲阜市| 镇沅| 依安县| 潜江市| 镇巴县| 德江县| 屯昌县| 凤山县| 广东省| 莆田市| 平潭县| 新河县| 大安市| 叶城县|