Tapestry

          記錄學(xué)習(xí)Tapestry專用布格格。很多文章都轉(zhuǎn)載網(wǎng)絡(luò)。

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            20 隨筆 :: 0 文章 :: 4 評論 :: 0 Trackbacks

          第一,頁面是頁面,頁面跳轉(zhuǎn)的時(shí)候,需要清空properties數(shù)據(jù),否則,這些數(shù)據(jù)保存在session里面,很容易造成bug。打個(gè)比方說吧,initialize()這個(gè)方法,的確,在頁面表現(xiàn)的時(shí)候,執(zhí)行兩次。頁面表現(xiàn)之前,初始化你的頁面,然后頁面表現(xiàn)你的業(yè)務(wù)邏輯,比如你要顯示什么新聞呀等等。。。最后,頁面在結(jié)束表現(xiàn)之前,再次執(zhí)行這個(gè)方法,將你的properties還原為初始值,這樣,在你的下次再訪問該頁面的時(shí)候,不會因?yàn)?properties的值已經(jīng)改變而造成意想不到的錯(cuò)誤。

          第二,提交一般是指表單,也就是formSubmit。如果你希望這個(gè)表單在提交之前就有初始值,也很容易,將ognl對應(yīng)的get方法對應(yīng)的成員變量初始化一個(gè)值就可以。比如說用initialize()來初始化。在你submit之后,ognl會自動調(diào)用properties相應(yīng)的set方法賦值,你在form對應(yīng)的監(jiān)聽方法進(jìn)行數(shù)據(jù)處理就可以了。

          第三,其它的Tapestry自帶方法就不說了。什么validate()等等,都不提,只講這5個(gè)方法:
          initialize()
          detach()
          attach()
          pageBeginRender()
          pageAfterRender()
          它們的執(zhí)行是有先后順序的,其中只有initialize()方法會執(zhí)行兩次,其它的都執(zhí)行一次。這些特點(diǎn),足夠你利用來做很多事。
          頁面在表現(xiàn)(render)的時(shí)候,我只以direct service舉例:
          1)執(zhí)行initialize(),初始化該頁面的properties,這些properties都應(yīng)該是客戶端的瞬時(shí)狀態(tài)。
          2)執(zhí)行attach(IEngine value),獲取你的engine。所以,你可以利用這個(gè)方法往你的web容器里面加載服務(wù)。
          3)執(zhí)行pageBeginRender(),同樣是用來在頁面表現(xiàn)之前,給你希望的變量賦值。。比如說,我基本上是用這個(gè)方法來獲取Visit對象中儲存的session值。
          4)頁面表現(xiàn)業(yè)務(wù)邏輯。你的什么Foreach啊,等等,現(xiàn)在才開始執(zhí)行。
          5)執(zhí)行pageEndRender()。在你的頁面業(yè)務(wù)邏輯表現(xiàn)完之后,如果你希望有什么后續(xù)工作,可以在這里執(zhí)行。
          6)執(zhí)行detach()的super(),也就是執(zhí)行AbstractPage里面Tapestry自己的detach(),目的是為了清空該頁面所調(diào)用的engine,visit,requestCycle。因?yàn)槿绻磺蹇盏脑挘热缡裁从脩粜畔⒌脑挘涂赡軙孤丁_@個(gè)方法的存在是 Tapestry基于安全性的考慮。
          7)執(zhí)行initialize(),再次將你的properties恢復(fù)為初始值。
          8)執(zhí)行detach()里面,你自己寫的內(nèi)容。。
          以上僅僅最簡單的情況下,這5種方法的執(zhí)行順序。。。

          posted on 2007-01-29 18:46 Tapestry 閱讀(564) 評論(0)  編輯  收藏 所屬分類: Tapestry
          主站蜘蛛池模板: 安福县| 岳阳县| 理塘县| 靖宇县| 武胜县| 曲麻莱县| 长寿区| 柳州市| 和硕县| 陆河县| 大英县| 广昌县| 德保县| 聂荣县| 庆阳市| 通渭县| 孙吴县| 洞头县| 芜湖市| 泊头市| 北宁市| 浦江县| 浮山县| 长武县| 武冈市| 当涂县| 建昌县| 滦南县| 西乌| 宁国市| 叶城县| 安阳县| 白河县| 武夷山市| 和田市| 大安市| 庆安县| 桂林市| 聂荣县| 卓尼县| 合作市|