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

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

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

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

    在應(yīng)用中使用velocity,一般需要以下的幾個(gè)步驟:
    •   初始化Velocity,可以使用單例,或者運(yùn)行期實(shí)例
    •   創(chuàng)建context對(duì)象,用于包括相應(yīng)的變量
    •   在context中增加相應(yīng)的數(shù)據(jù)
    •   選擇模板
    •   合并模板,產(chǎn)生輸出

    如下的例子:
    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


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


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

    而默認(rèn)的VelocityContext是使用map封裝,保存相應(yīng)的變量

    當(dāng)然,如果想和其他環(huán)境合并,如FacesContext中的Elcontext,需要定義自己的實(shí)現(xiàn)類。

    Context chaining,
    context支持多個(gè)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不僅可以用于提供模板輸出,而且可以直接對(duì)字符串進(jìn)行評(píng)估:
    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 布衣郎 閱讀(3858) 評(píng)論(0)  編輯  收藏 所屬分類: web view技術(shù)

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

    常用鏈接

    留言簿(12)

    隨筆分類(59)

    隨筆檔案(57)

    blog

    java

    uml

    搜索

    •  

    積分與排名

    • 積分 - 357203
    • 排名 - 155

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 好爽…又高潮了毛片免费看| a级毛片免费观看网站| 亚洲熟妇av一区| 亚洲国产高清视频| 亚洲人成中文字幕在线观看| 久久久久亚洲精品天堂久久久久久| 亚洲爽爽一区二区三区| 中文字幕亚洲电影| 亚洲一区二区三区偷拍女厕 | 免费在线中文日本| 午夜免费啪视频在线观看| 美女视频黄的免费视频网页| 国产亚洲免费的视频看| 久久精品乱子伦免费| 外国成人网在线观看免费视频| 无码国产精品一区二区免费模式| 中文字幕免费视频| 成人毛片18女人毛片免费视频未| 女人张腿给男人桶视频免费版| 日本一线a视频免费观看| 国产无遮挡色视频免费视频| avtt亚洲天堂| 亚洲熟妇丰满多毛XXXX| 亚洲制服中文字幕第一区| 亚洲中文字幕人成乱码 | 亚洲国产精品乱码一区二区| 久久青青草原亚洲AV无码麻豆 | 亚洲综合国产精品| 亚洲一卡二卡三卡四卡无卡麻豆| 亚洲国产精品成人综合色在线| 免费在线观看自拍性爱视频| 成人无码WWW免费视频| 五月婷婷在线免费观看| 成全视频免费高清| 亚洲中文字幕成人在线| 久久精品亚洲视频| 香蕉大伊亚洲人在线观看| 成人免费夜片在线观看| 免费无遮挡无码永久视频| 妞干网在线免费观看| 区久久AAA片69亚洲|