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

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

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

    posts - 176, comments - 240, trackbacks - 0, articles - 7

    tpl標(biāo)簽定義

    Posted on 2005-11-27 20:32 canonical 閱讀(1117) 評(píng)論(0)  編輯  收藏 所屬分類: Witrix開發(fā)平臺(tái)
        tpl自定義標(biāo)簽的設(shè)計(jì)目標(biāo)之一是盡量減少配置說明項(xiàng). 在tpl標(biāo)簽庫中, 標(biāo)簽定義格式如下
        <標(biāo)簽庫名稱>
            <自定義標(biāo)簽名 demandArgs="argA, argB"
                importVars="varA, varB"
                otherArgs="optionalArgA, optionalArgB" localScope="trueOrFalse" >

                自定義標(biāo)簽的內(nèi)容, 可以是任何tpl代碼
            </自定義標(biāo)簽名>

        </標(biāo)簽庫名稱>

        demandArgs中指定調(diào)用時(shí)必須給定的參數(shù)的名稱列表, importVars指定從調(diào)用環(huán)境中導(dǎo)入的變量的名稱列表,otherArgs指定可選參數(shù)的名稱列表. demandArgs, importVars和otherArgs這三者的集合包含了所有該自定義標(biāo)簽?zāi)軌蚪邮艿膮?shù). tpl編譯器會(huì)檢查這些調(diào)用規(guī)則是否被滿足. 在運(yùn)行的時(shí)候, 未指定的可選參數(shù)會(huì)被初始化為null.

        在調(diào)用時(shí)明確的指定的變量值會(huì)覆蓋importVars導(dǎo)入的變量值. 例如
        <c:set var="varA" value="a" />
        <MyLib:自定義標(biāo)簽名 /> // 根據(jù)importVars設(shè)定, 在此標(biāo)簽內(nèi)varA的值為a
        <MyLib:自定義標(biāo)簽名 varA="b" /> // args設(shè)定會(huì)覆蓋importVars導(dǎo)入的值,因此在標(biāo)簽內(nèi)部 varA的值為b
        // 調(diào)用標(biāo)簽完成后, varA的值恢復(fù)為a

        tpl中的參數(shù)聲明方式是非常簡(jiǎn)化的,但是它仍然保留了最關(guān)鍵的信息:變量名稱. 而在弱類型的Expresison Language中, 變量類型本來就不重要. 與jsp tag中的標(biāo)簽聲明作個(gè)對(duì)比.
         <tag>
            <name>template</name>
            <tagclass>edu.thu.web.tags.TemplateTag</tagclass>
            <bodycontent>JSP</bodycontent>
            <attribute>
                <name>src</name>
                <required>true</required>
                <rtexprvalue>true</rtexprvalue>
            </attribute>
        </tag>
        jsp tag這種標(biāo)簽聲明方式非常冗長, 提供的有效信息密度很低, 而相對(duì)于tpl標(biāo)簽的聲明方式所能夠提供的附加信息也沒有很大的意義. 這種設(shè)計(jì)上的問題也深深的影響到JSF等派生技術(shù).

        localScope參數(shù)指定了此自定義標(biāo)簽是否具有局部變量環(huán)境, 如果為true(缺省值),  則調(diào)用此標(biāo)簽的時(shí)候會(huì)自動(dòng)進(jìn)行變量壓棧處理, 在標(biāo)簽內(nèi)部無法訪問參數(shù)列表之外的變量, 運(yùn)行中所產(chǎn)生的臨時(shí)變量也不會(huì)影響到外部環(huán)境. tpl中的變量堆棧與webwork的ValueStack機(jī)制是有一些差異的. webwork2中的ognl語言在訪問OgnlValueStack中的對(duì)象的時(shí)候缺省采用的是一種遞歸查找機(jī)制, 即在當(dāng)前環(huán)境中找不到對(duì)象, 則自動(dòng)查找上一層環(huán)境中的變量. tpl中的標(biāo)簽結(jié)構(gòu)可以多重嵌套, 產(chǎn)生非常復(fù)雜的結(jié)構(gòu), 所以缺省情況下tpl標(biāo)簽采用了類似于函數(shù)堆棧的設(shè)計(jì), 在子標(biāo)簽中的代碼一般情況下是無法訪問父標(biāo)簽環(huán)境中的變量的(除非指定了localScope參數(shù)為true). localScope支持與importVars機(jī)制相結(jié)合之后, 我們可以實(shí)現(xiàn)比OgnlValueStack更加靈活也更加穩(wěn)健的變量訪問策略.  

    主站蜘蛛池模板: 中文日本免费高清| 亚洲喷奶水中文字幕电影| 亚洲av午夜国产精品无码中文字| 91福利免费视频| 91亚洲自偷手机在线观看| 无码国产精品一区二区免费式芒果| 一区二区三区在线免费| 亚洲av日韩片在线观看| 亚洲视频在线免费| 亚洲无线码在线一区观看| 久久久国产精品福利免费| 日韩精品视频免费在线观看| 亚洲色精品VR一区区三区| 在线观看亚洲免费| 中美日韩在线网免费毛片视频| 久久乐国产精品亚洲综合| 野花香高清视频在线观看免费 | 久久久久亚洲av无码专区 | 国产成人亚洲精品91专区高清| 国产精品另类激情久久久免费 | 免费无遮挡无码永久视频| 91亚洲导航深夜福利| 16女性下面无遮挡免费| 亚洲人成欧美中文字幕| 啊灬啊灬别停啊灬用力啊免费看| jizz18免费视频| 亚洲成aⅴ人片在线观| 在线观看亚洲免费| 精品视频在线免费观看| 亚洲一区免费观看| 国产美女无遮挡免费视频| 三上悠亚电影全集免费| 亚洲不卡中文字幕| 亚洲人成人无码网www国产| 久久精品无码专区免费东京热| 亚洲中文字幕日本无线码| 亚洲国产综合无码一区二区二三区| 免费精品99久久国产综合精品| 一本色道久久88—综合亚洲精品| 亚洲国产成人久久精品99| 四虎成人精品永久免费AV|