<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)論排行榜

    主站蜘蛛池模板: 久久久久成人精品免费播放动漫| 在线免费视频一区二区| 亚洲一卡2卡4卡5卡6卡在线99| 成人a视频片在线观看免费| av成人免费电影| 91亚洲一区二区在线观看不卡| 成人免费视频网址| 四虎国产精品免费永久在线| 亚洲无线一二三四区| 亚洲国产精品国产自在在线| 最近2019免费中文字幕视频三| 豆国产96在线|亚洲| 亚洲高清无在码在线无弹窗| 伊在人亚洲香蕉精品区麻豆| 91香蕉在线观看免费高清| 黄色免费在线网址| 亚洲黄色三级网站| 亚洲精品尤物yw在线影院| 黄色网址免费观看| 一级美国片免费看| 亚洲欧美成aⅴ人在线观看| 亚洲AV日韩AV天堂久久| 亚洲AV之男人的天堂| 99爱在线精品免费观看| 五月天婷婷免费视频| 中国亚洲呦女专区| 久久亚洲春色中文字幕久久久| 免费夜色污私人影院在线观看| 国产又大又粗又长免费视频 | 亚洲精品国产免费| 亚洲自偷自偷偷色无码中文| 日本成人免费在线| 免费看国产成年无码AV片| 少妇人妻偷人精品免费视频| 亚洲免费无码在线| 另类图片亚洲校园小说区| 亚洲人成自拍网站在线观看| 亚洲精品国产电影午夜| 亚洲AV无码专区国产乱码电影 | 亚洲精品伦理熟女国产一区二区| 亚洲国产精品lv|