<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)健的變量訪問策略.  

    主站蜘蛛池模板: 欧美亚洲精品一区二区| 内射干少妇亚洲69XXX| 亚洲av无码av在线播放| 国产精品久久久久久久久久免费| 亚洲精品国产手机| 性短视频在线观看免费不卡流畅| 亚洲最大黄色网站| 在线看片免费不卡人成视频| 亚洲av无码专区在线| 无码中文在线二区免费| 亚洲三级高清免费| 国产真人无遮挡作爱免费视频| 亚洲AV永久无码精品一福利| 免费va在线观看| 一级毛片免费在线播放| 精品国产亚洲一区二区三区| 国产成人精品无码免费看| 亚洲视频在线观看视频| 夜夜嘿视频免费看| 两个人的视频高清在线观看免费| 国产性生交xxxxx免费| 猫咪免费人成网站在线观看入口 | 久99久精品免费视频热77| 久久久影院亚洲精品| 免费精品国产日韩热久久| 亚洲精华国产精华精华液| 亚洲A∨午夜成人片精品网站| 国产大片免费天天看| 久久综合图区亚洲综合图区| 国产精品久久免费| 亚洲youwu永久无码精品| 国产综合亚洲专区在线| 亚洲视频免费播放| 在线观看亚洲免费| 亚洲一区中文字幕久久| 妞干网免费观看视频| 拍拍拍无挡视频免费观看1000| 亚洲婷婷天堂在线综合| 男人的天堂亚洲一区二区三区 | 亚洲午夜激情视频| 午夜网站在线观看免费完整高清观看|