<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    閑人野居
    好好學習,天天向上
    posts - 57,  comments - 137,  trackbacks - 0
    先來看看velocity是怎么工作的?

    在應用中使用velocity,一般需要以下的幾個步驟:
    •   初始化Velocity,可以使用單例,或者運行期實例
    •   創建context對象,用于包括相應的變量
    •   在context中增加相應的數據
    •   選擇模板
    •   合并模板,產生輸出

    如下的例子:
    import java.io.StringWriter;
    import org.apache.velocity.VelocityContext;
    import org.apache.velocity.Template;
    import org.apache.velocity.app.Velocity;
    import org.apache.velocity.exception.ResourceNotFoundException;
    import org.apache.velocity.exception.ParseErrorException;
    import org.apache.velocity.exception.MethodInvocationException;

    Velocity.init();                            
    1

    VelocityContext context 
    = new VelocityContext();    2

    context.put( 
    "name"new String("Velocity") );        3

    Template template 
    = null;

    try
    {
       template 
    = Velocity.getTemplate("mytemplate.vm");    4
    }
    catch( ResourceNotFoundException rnfe )
    {
       
    // couldn't find the template
    }
    catch( ParseErrorException pee )
    {
      
    // syntax error: problem parsing the template
    }
    catch( MethodInvocationException mie )
    {
      
    // something invoked in the template
      
    // threw an exception
    }
    catch( Exception e )
    {}

    StringWriter sw 
    = new StringWriter();

    template.merge( context, sw );                
    5


    上面的例子使用的是單例模式,可以使用運行期實例:
    VelocityEngine ve = new VelocityEngine();
    ve.setProperty(
        VelocityEngine.RUNTIME_LOG_LOGSYSTEM, 
    this);
    ve.init();


    關于context
    context,類似于map環境,包括兩個主要的方法:
    public Object put(String key, Object value);
    public Object get(String key);

    而默認的VelocityContext是使用map封裝,保存相應的變量

    當然,如果想和其他環境合并,如FacesContext中的Elcontext,需要定義自己的實現類。

    Context chaining,
    context支持多個context串,如下:
    VelocityContext context1 = new VelocityContext();

    context1.put(
    "name","Velocity");
    context1.put(
    "project""Jakarta");
    context1.put(
    "duplicate""I am in context1");

    VelocityContext context2 
    = new VelocityContext( context1 );

    context2.put(
    "lang""Java" );
    context2.put(
    "duplicate""I am in context2");

    template.merge( context2, writer );


    Velocity不僅可以用于提供模板輸出,而且可以直接對字符串進行評估:
    StringWriter w = new StringWriter();
    Velocity.mergeTemplate(
    "testtemplate.vm", context, w );

    String s 
    = "We are using $project $name to render this.";
    = new StringWriter();
    Velocity.evaluate( context, w, 
    "mystring", s );



    posted on 2007-05-17 07:34 布衣郎 閱讀(3870) 評論(0)  編輯  收藏 所屬分類: web view技術

    <2007年5月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(12)

    隨筆分類(59)

    隨筆檔案(57)

    blog

    java

    uml

    搜索

    •  

    積分與排名

    • 積分 - 358005
    • 排名 - 156

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品在线播放| 中文字幕亚洲精品资源网| 免费A级毛片在线播放不收费| 亚洲国产精品碰碰| 国产亚洲精品资在线| 久久香蕉国产线看观看亚洲片| 亚洲免费观看网站| 精品亚洲av无码一区二区柚蜜| 五月天婷婷免费视频| 在线人成精品免费视频| 美女黄网站人色视频免费国产| 在线观看亚洲精品国产| 国内精品久久久久影院亚洲| 人禽伦免费交视频播放| 中文字幕亚洲综合久久菠萝蜜| 成人免费777777被爆出| 久九九精品免费视频| 亚洲精品老司机在线观看| 亚洲另类视频在线观看| 成年女人男人免费视频播放| 亚洲AV永久青草无码精品| 91禁漫免费进入| 亚洲私人无码综合久久网| 1区2区3区产品乱码免费| 亚洲日韩国产精品第一页一区| 亚洲一区二区三区国产精华液| 免费无码又爽又刺激高潮的视频| 国产亚洲福利一区二区免费看| h片在线免费观看| 亚洲图片一区二区| 9久热这里只有精品免费| 国产成人免费A在线视频| 亚洲午夜电影一区二区三区| 免费毛片网站在线观看| 国产免费伦精品一区二区三区| 亚洲伦另类中文字幕| 免费无码黄网站在线观看| 免费无码黄网站在线看| 亚洲一区二区视频在线观看| 色婷婷六月亚洲综合香蕉| 大陆一级毛片免费视频观看|