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

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

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

    OMG,到底在尋找什么..................
    (構(gòu)造一個(gè)完美的J2EE系統(tǒng)所需要的完整知識(shí)體系)
    posts - 198,  comments - 37,  trackbacks - 0
    轉(zhuǎn)貼地址:http://blog.csdn.net/chenyun2000/archive/2004/11/02/162979.aspx

    1、快速入門

    1)模板 + 數(shù)據(jù)模型 = 輸出

    l???????? FreeMarker基于設(shè)計(jì)者和程序員是具有不同專業(yè)技能的不同個(gè)體的觀念

    l???????? 他們是分工勞動(dòng)的:設(shè)計(jì)者專注于表示——?jiǎng)?chuàng)建HTML文件、圖片、Web頁(yè)面的其它可視化方面;程序員創(chuàng)建系統(tǒng),生成設(shè)計(jì)頁(yè)面要顯示的數(shù)據(jù)

    l???????? 經(jīng)常會(huì)遇到的問題是:在Web頁(yè)面(或其它類型的文檔)中顯示的信息在設(shè)計(jì)頁(yè)面時(shí)是無效的,是基于動(dòng)態(tài)數(shù)據(jù)的

    l???????? 在這里,你可以在HTML(或其它要輸出的文本)中加入一些特定指令,FreeMarker會(huì)在輸出頁(yè)面給最終用戶時(shí),用適當(dāng)?shù)臄?shù)據(jù)替代這些代碼

    l???????? 下面是一個(gè)例子:

    <html>
    <head>
    ? <title>Welcome!</title>
    </head>
    <body>
    ? <h1>Welcome ${user}!</h1>
    ? <p>Our latest product:
    ? <a href="${latestProduct.url}">${latestProduct.name}</a>!
    </body>
    </html>? 

    l???????? 這個(gè)例子是在簡(jiǎn)單的HTML中加入了一些由${…}包圍的特定代碼,這些特定代碼是FreeMarker的指令,而包含FreeMarker的指令的文件就稱為模板(Template

    l???????? 至于userlatestProduct.urllatestProduct.name來自于數(shù)據(jù)模型(data model

    l???????? 數(shù)據(jù)模型由程序員編程來創(chuàng)建,向模板提供變化的信息,這些信息來自于數(shù)據(jù)庫(kù)、文件,甚至于在程序中直接生成

    l???????? 模板設(shè)計(jì)者不關(guān)心數(shù)據(jù)從那兒來,只知道使用已經(jīng)建立的數(shù)據(jù)模型

    l???????? 下面是一個(gè)可能的數(shù)據(jù)模型:

    (root)
    ? |
    ? +- user = "Big Joe"
    ? |
    ? +- latestProduct
    ????? |
    ????? +- url = "products/greenmouse.html"
    ????? |
    ????? +- name = "green mouse"

    l???????? 數(shù)據(jù)模型類似于計(jì)算機(jī)的文件系統(tǒng),latestProduct可以看作是目錄,而userurlname看作是文件,urlname文件位于latestProduct目錄中(這只是一個(gè)比喻,實(shí)際并不存在)

    l???????? 當(dāng)FreeMarker將上面的數(shù)據(jù)模型合并到模板中,就創(chuàng)建了下面的輸出:

    <html>
    <head>
    ? <title>Welcome!</title>
    </head>
    <body>
    ? <h1>Welcome Big Joe!</h1>
    ? <p>Our latest product:
    ? <a href="products/greenmouse.html">green mouse</a>!
    </body>
    </html>? 

    2)數(shù)據(jù)模型

    l???????? 典型的數(shù)據(jù)模型是樹型結(jié)構(gòu),可以任意復(fù)雜和深層次,如下面的例子:

    (root)
    ? |
    ? +- animals
    ? |?? |
    ? |?? +- mouse
    ? |?? |?? |?? 
    ??|?? |?? +- size = "small"
    ? |?? |?? |?? 
    ??|?? |?? +- price = 50
    ? |?? |
    ? |?? +- elephant
    ? |?? |?? |?? 
    ??|?? |?? +- size = "large"
    ? |?? |?? |?? 
    ??|?? |?? +- price = 5000
    ? |?? |
    ? |?? +- python
    ? |?????? |?? 
    ??|?????? +- size = "medium"
    ? |?????? |?? 
    ??|?? ????+- price = 4999
    ? |
    ? +- test = "It is a test"
    ? |
    ? +- whatnot
    ????? |
    ????? +- because = "don't know"

    l???????? 類似于目錄的變量稱為hashes,包含保存下級(jí)變量的唯一的查詢名字

    l???????? 類似于文件的變量稱為scalars,保存單值

    l???????? scalars保存的值有兩種類型:字符串(用引號(hào)括起,可以是單引號(hào)或雙引號(hào))和數(shù)字(不要用引號(hào)將數(shù)字括起,這會(huì)作為字符串處理)

    l???????? 對(duì)scalars的訪問從root開始,各部分用“.”分隔,如animals.mouse.price

    l???????? 另外一種變量是sequences,和hashes類似,只是不使用變量名字,而使用數(shù)字索引,如下面的例子:

    (root)
    ? |
    ? +- animals
    ? |?? |
    ? |?? +- (1st)
    ? |?? |?? |
    ? |?? |?? +- name = "mouse"
    ? |?? |?? |
    ? |?? |?? +- size = "small"
    ? |?? |?? |
    ? |?? |?? +- price = 50
    ? |?? |
    ? |?? +- (2nd)
    ? |?? |?? |
    ? |?? |?? +- name = "elephant"
    ? |?? |?? |
    ? |?? |?? +- size = "large"
    ? |?? |?? |
    ? |?? |?? +- price = 5000
    ? |?? |
    ? |?? +- (3rd)
    ? |?????? |
    ? |?????? +- name = "python"
    ? |?????? |
    ? |?????? +- size = "medium"
    ? |?????? |
    ? |?????? +- price = 4999
    ? |
    ? +- whatnot
    ????? |
    ????? +- fruits
    ????????? |
    ????????? +- (1st) = "orange"
    ????????? |
    ????????? +- (2nd) = "banana"

    l???????? 這種對(duì)scalars的訪問使用索引,如animals[0].name

    3)模板

    l???????? FreeMarker模板中可以包括下面三種特定部分:

    ????????? ${…}:稱為interpolationsFreeMarker會(huì)在輸出時(shí)用實(shí)際值進(jìn)行替代

    ????????? FTL標(biāo)記(FreeMarker模板語言標(biāo)記):類似于HTML標(biāo)記,為了與HTML標(biāo)記區(qū)分,用#開始(有些以@開始,在后面敘述)

    ????????? 注釋:包含在<#---->(而不是<!---->)之間

    l???????? 下面是一些使用指令的例子:

    ????????? if指令

    <#if animals.python.price < animals.elephant.price>
    ? Pythons are cheaper than elephants today.
    <#else>
    ? Pythons are not cheaper than elephants today.
    </#if>? 

    ????????? list指令

    <p>We have these animals:
    <table border=1>
    ? <tr><th>Name<th>Price
    ? <#list animals as being>
    ? <tr><td>${being.name}<td>${being.price} Euros
    ? </#list>
    </table>? 

    輸出為:

    <p>We have these animals:
    <table border=1>
    ? <tr><th>Name<th>Price
    ? <tr><td>mouse<td>50 Euros
    ? <tr><td>elephant<td>5000 Euros
    ? <tr><td>python<td>4999 Euros
    </table>? 

    ????????? include指令

    <html>
    <head>
    ? <title>Test page</title>
    </head>
    <body>
    ? <h1>Test page</h1>
    ? <p>Blah blah...
    <#include "/copyright_footer.html">
    </body>
    </html>? 

    ????????? 一起使用指令

    <p>We have these animals:
    <table border=1>
    ? <tr><th>Name<th>Price
    ? <#list animals as being>
    ? <tr>
    ??? <td>
    ????? <#if being.size = "large"><b></#if>
    ????? ${being.name}
    ????? <#if being.size = "large"></b></#if>
    ??? <td>${being.price} Euros
    ? </#list>
    </table
    posted on 2006-04-19 18:01 OMG 閱讀(304) 評(píng)論(0)  編輯  收藏 所屬分類: FreeMarker

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    <2006年4月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    IT風(fēng)云人物

    文檔

    朋友

    相冊(cè)

    經(jīng)典網(wǎng)站

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 国产美女被遭强高潮免费网站| 少妇高潮太爽了在线观看免费| AA免费观看的1000部电影| 免费在线视频一区| 亚洲色图国产精品| 亚洲AV综合色区无码一二三区| a级毛片视频免费观看| 97在线线免费观看视频在线观看| 亚洲精品乱码久久久久久不卡| 亚洲另类春色校园小说| 一进一出60分钟免费视频| 国产曰批免费视频播放免费s| 亚洲av午夜成人片精品电影| 亚洲第一成年人网站| 一区二区免费国产在线观看| 成人免费黄色网址| 亚洲人成影院在线观看| 亚洲人色大成年网站在线观看| 久香草视频在线观看免费| 毛片免费在线视频| 亚洲av无码一区二区乱子伦as| 在线91精品亚洲网站精品成人| 久久久久久AV无码免费网站| 免费一级毛片清高播放| 亚洲一区二区三区在线观看蜜桃| sss日本免费完整版在线观看| 成人特黄a级毛片免费视频| 亚洲第一极品精品无码久久| 美女免费视频一区二区| 91精品国产免费久久久久久青草| 亚洲色精品88色婷婷七月丁香| 亚洲国产成人无码AV在线影院 | 亚洲精品第一国产综合亚AV| 久久免费线看线看| 亚洲成a人片在线观看日本麻豆| 亚洲一区二区三区免费观看| 国产va在线观看免费| 国产日产亚洲系列最新| 国产精品亚洲一区二区三区久久| 免费专区丝袜脚调教视频| 亚洲色无码专区在线观看|