<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
    先來(lái)看看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,類(lèi)似于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)類(lèi)。

    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 布衣郎 閱讀(3859) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): web view技術(shù)

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

    常用鏈接

    留言簿(12)

    隨筆分類(lèi)(59)

    隨筆檔案(57)

    blog

    java

    uml

    搜索

    •  

    積分與排名

    • 積分 - 357223
    • 排名 - 155

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲中文字幕第一页在线| 女bbbbxxxx另类亚洲| 亚洲精品成a人在线观看| 国产精品视频免费观看| 色www永久免费网站| 豆国产96在线|亚洲| 亚洲91精品麻豆国产系列在线 | 亚洲视频在线观看一区| 亚洲国产成人a精品不卡在线| 妞干网手机免费视频| 最近中文字幕mv免费高清视频8| 成全视成人免费观看在线看| 疯狂做受xxxx高潮视频免费| 亚洲中文无码mv| 亚洲一区在线视频| 亚洲熟妇无码爱v在线观看| 亚洲成亚洲乱码一二三四区软件| 亚洲欧洲自拍拍偷精品 美利坚 | 亚洲校园春色小说| 亚洲爱情岛论坛永久| 亚洲色大成网站WWW久久九九| 亚洲国产精品尤物yw在线 | 色五月五月丁香亚洲综合网| 精品丝袜国产自在线拍亚洲| 亚洲毛片免费观看| 久久久久亚洲AV无码网站| 亚洲成年轻人电影网站www| 亚洲国产精品一区二区久久hs| 亚洲自偷自偷在线制服| 亚洲精品无码99在线观看 | 亚洲砖码砖专无区2023| 亚洲av午夜精品无码专区| 亚洲美女视频一区| 亚洲欧洲另类春色校园小说| 亚洲噜噜噜噜噜影院在线播放| 亚洲国产精品xo在线观看| 亚洲av乱码一区二区三区香蕉 | 免费a级毛片无码a∨蜜芽试看| 免费毛片a在线观看67194 | 亚洲欧美综合精品成人导航| 亚洲熟女精品中文字幕|