Dict.CN 在線詞典, 英語學習, 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          導航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          公告


          我的blog中的部分資源是來自于網絡上,如果你認為侵犯了你的權利,請及時聯系jelver#163.com,我會盡快刪除!另外如果要留言最好通過郵件的形式跟我交流因為我不是很經常寫文章,前面有的朋友留言好久了我才發現,所以對不住大家,現在留下MSN:jelver#163.com和QQ:253840881,歡迎交流! (用@代替#)

          隨筆分類

          文章分類

          隨筆檔案

          文章檔案

          相冊

          統計

          留言簿(23)

          積分與排名

          優秀學習網站

          友情連接

          閱讀排行榜

          評論排行榜

          Tapestry總架構

          原文:http://bilang.rocklv.net/Tapestry.html
          hideTapestry
          hide開發調試
          hide禁止緩存參數
          leaf-Dorg.apache.tapestry.disable-caching=true -Dorg.apache.tapestry.enable-reset-service=true
          hide調試參數
          leafset JAVA_OPTS="-Dorg.apache.tapestry.disable-caching=true" set JPDA_ADDRESS=8000 set JPDA_TRANSPORT=dt_socket catalina jpda start
          hide表單驗證
          hidedelegate
          leaf方案1:打印出錯信息需要new一個ValidationDelegate。
          leaf方案2:.page文件中配置<bean>標簽
          leaf方案3:.page中不配置<bean>,抽象方法上使用元數據@Bean
          hidevalidators
          leaf.page文件中每個需要驗證的表單元素組件綁定一個validators
          leaf表達式:validators:+判斷條件+[錯誤提示]
          hide空輸入問題
          leaft4默認空都可以驗證通過
          leaf通過[value="validators:required"]來保證輸入不為空
          leafFieldlable可以與TextField綁定顯示錯誤信息
          hide客戶端驗證
          leaf在Form組件中綁定<binding name="clientValidationEnabled" value="true"/>
          hide若表單輸入驗證正確,邏輯上的驗證應該在監聽方法中進行
          leaf例如:蘋果庫存只有20,用戶買進50,這是非法的
          leaf驗證時應向ValidationDelegate記錄出錯信息
          hide創建delegate
          leafdelegate.setFormComponent((IFormComponent) getComponent("XXX"));
          leafdelegate.recordFieldInputValue(Integer.toString(XXXX));
          leafdelegate.record("XXX must be >=0",ValidationConstraint.TOO_SMALL);
          hideidea組件復用
          leaft4中一個組件不能用兩次,即一個jwcid不能在.html中重復出現
          leaf解決方案:組件重命名。<compoment id="rename" copy-of="name">
          leaf“@Class@XXX”表示訪問一個class的XXX靜態方法或靜態變量. 其中Class為完整路徑(既包括包名)
          hide判斷按鈕是否clicked三種方式
          leaffull-1對每個button使用一個Form組件
          leaffull-2給每個button添加一個“tag”,通過tag值判斷which按鈕be clicked
          leaffull-3為每個button添加一個listener(簡單、面向對象,推薦使用)
          hideideasubmit提交原理
          hide監聽方法獲得參數的方式
          leaf1、實現IRequestCycle會的監聽方法的參數
          hide2、聲明帶正確參數順序的監聽方法,t4自動boxing
          leaf* public type method(parameters)
          leaf* public type method(IRequestCycle cycle, parameters)
          leaf * public type method()
          leaf* public type method(IRequestCycle cycle)
          hide3、實現提交后轉頁
          leafpublic void listener(IRequestCycle cycle) { return cycle.active("PageName");}
          leafpublic String listener(IRequestCycle cycle) {return "PageName";}
          leafpublic IPage Listener(IRequestCycle cycle) {return (IPage)pageName;}
          leaf頁面提交后,t4會從頁面pool重新獲得或創建page object。因此提交前后同一頁面的頁面對象引用是不一樣的,實例變量可能會一樣也不可能一樣。
          leafbutton_ok因此不要在頁面對象在定義成員變量(包括頁面組件對應的成員變量),因為跨頁面訪問他們總是無效的有潛在危險。
          hide上面問題的解決方案
          leaf1、使用客戶端持久化需要訪問的持久化成員變量,聲明get、set抽象方法,用@Persist("client")注釋。 使用時應判斷get方法是否為null,因為這種持久化方式不會初始化變量
          leaf2、使用抽象get、set方法,由t4來實現。
          hideHiveMind模塊
          leafsession對象可以在hivemodule.xml中配置
          leafhivemodule.xml存放于WEB-INF/classes/META-INF 目錄下。或.jar文件的META-INF目錄下
          leafhivemodule.xml每個模塊的id必須唯一,一般以模塊包名作為id
          hideideasession
          hide獲得方式
          leaf1、聲明抽象方法,通過元數據injectState("ObjectName")注釋
          leaf2、聲明抽象方法,在.page中<inject>對象
          hide判斷存在方式
          hideannotation
          leaf1、聲明抽象方法,該方法命名格式為getXXX()或者isXXX()
          leaf2、使用元數據注釋@InjectStateFlag("sessionObj")
          leaf.page聲明<inject type="state-flag" property="userExists" object="sessionObj"/>
          leaf注銷:使用Servicelink組件的restart service。該service刪除sessionObj,并且從定向到首頁。
          hide安全處理
          leaf1、關鍵性頁面應該在頁面中進行用戶驗證,防止匿名用戶訪問。頁面對象實現PageValidateListener接口。
          hide2、htmlA-〉login-〉htmlA方式解決方案
          leaf該頁面類實現IExternalPage,該接口可接受參數
          hide參數維護
          hideidea客戶端保存參數(推薦)
          leaf1、使用Hidden組件,并提供該屬的get、set方法實現
          leaf2、使用元數據@Persist("client"),不能夠聲明abstract的set、get方法
          leafsession保存參數
          hidesnippets
          hide默認表達式
          leaf.html中為literal
          hide.page中為OGNL
          leafproperty access
          leafmathematical expressions
          leafmethod invocations
          leafreference static fields of public classes
          leafcreate new objects, including lists and maps
          leafURL中的sp,t3叫服務參數、t4叫監聽參數
          hidepage對象查詢
          leaf1、.page中聲明
          leaf2、在.application聲明org.apache.tapestry.page-class-packages中查找(推薦)
          hide特殊頁面組件
          leaf1、$remove$,刪除該html元素(即僅去掉某元素)
          leaf2、$content$,只生成該元素標簽間的的html code, 該元素以外其它元素忽略去掉(即僅保留某元素標簽內的內容)
          leafideat4通過無參的構造器來創建對象
          hide國際化
          hidehtml中使用技巧
          leaf1、<span key="hello">Hello</span>指名說用字典key
          leaf2、必須為<span>標簽,且key自不必加前綴(如message:,OGNL:)
          leaf3、組件需要國際化,組件的參數(具體看文檔)使用“massage:key”表達式。
          leaf不同地區的頁面風格,以XXX_CN.html這種方式命名
          hide字典文件
          leaf1、每個page可以擁有一個poperties
          leaf2、在WEB-INF下建立${servletname}.properties,所有page共享
          hide自定義組件
          leaf組件配置.jwc文件推薦最合理是放在WEB-INF下
          hidecontrib中的控件的使用
          leaf<library id="contrib" specification-path="/org/apache/tapestry/contrib/Contrib.library"/>
          hideinput校驗
          leaf推薦使用writer.beginEmpty("input")
          leaf使用writer.begin("input")和writer.end()
          hiderewinding(重繞),可以理解為刷新
          leafform.isRewinding()
          leafcycle.isRewinding()
          hide參數
          hide組件參數初始化
          leaf.jwc中<parameter>設置初始化
          leaffinishLoad()方法中初始化
          hide參數類型
          leafformal:是被定義在組件規范中的組件參數。每個formal parameter有一個特定(區分大小寫)的名稱,并且被標為required或者optional。
          leafinforma:是Html元素的屬性參數。(支持ognl表達式)
          leaf名字唯一,且通過抽象set、get方法訪問
          hide兩種自定義組件方式
          hide1、使用模版
          leaf其類應繼承自BaseComponent
          hide2、使用java code render(無模版)
          leaf其類應繼承自AbstractComponent實現renderComponent()
          leaf在renderComponent()中應合理調用renderInformalParameters() 、 renderBody()等,來render組件標簽的informal參數 和body。
          leaf在renderComponent()中設置屬性,應檢查該屬性參數是否綁定if (isParameterBound("title"))writer.attribute("title", getTitle());
          hide.jwc應指明的5個特征
          leaf1、組件類(無,這表明已在.library中申明)
          leaf2、該組件是否能使用body(必須)
          leaf3、參數的名稱和類型
          leaf4、是否允許informal參數(必須)
          leaf5、保留參數(即informal參數不能用的參數名)
          hide引用組件方式
          leaf1.在html總使用“@XXX”
          leaf2、在.page或.jwc中使用<component>將組件類型和jwcid綁定
          hide組件.jwc查詢先后路徑
          hide1、.application的<component-type>指定的路徑
          leaf適合無模板組件
          hide2、.application所在文件夾,一般就是WEB-INF(推薦,無須配置)
          leaf適合所有組件
          hide3、WEB-INF下的t4的servlet-name文件夾(無須配置)
          leaf若在servlet-name文件夾,適合所有組件
          leaf若在servlet-name文件夾的子文件夾,僅適合無模板組件
          hide4、context的根目錄(無須配置)
          leaf適合所有組件
          hide組件.html查詢路徑(與.jwc同一目錄)
          leaf1、WEB-INF目錄
          leaf2、context根目錄
          hide如何使用組件庫
          hide通過library引用
          leaf1、.application的<library>指明.library“相對”于.application的路徑,以及libID。例如classes/com/aaa/bbb/XXX.library
          leaf2、.library中指明組件類的包名 <meta key="org.apache.tapestry.component-class-packages" value="aa.bb.cc"/>
          leaf3、.library的<component-type>指明.jwc“相對”于.library的路徑,以及設置組件類型XXX(即組件別名);若.jwc,.library作同一目錄跳過此步驟(默認為.jwc文件名).
          leaf4、在html通過@libID:XXX調用,在.page中通過<component id="box" type="libID:XXX"/>
          hide通過application引用
          leaf1、.application中<component-type〉指明.jwc“相對”于.application的路徑,以及設置組件類型XXX(即組件別名);
          hide頁面
          hide頁面html模版
          hide搜索路徑
          leaf1、.page同一目錄
          leaf2、context根目錄
          hide頁面配置
          hide綁定方式
          leaf1、靜態綁定:即只讀,綁定的值在組件規范中指定
          leaf2、動態綁定:組件需要的時候,動態綁定通過其指定的JavaBean獲得值
          hide頁面對象
          leaf在page文件中聲明屬性,可以不必在java文件中聲明以及其get、set方法
          leaft4默認getXXX()抽象方法中的XXX為頁面屬性,.page不用聲明,并使用@InitialValue("value")賦初值.
          hide頁面對象實例會被緩存(有潛在非法訪問問題),解決方法:
          leaf覆蓋initialize()方法,初始化實例變量。(在放入緩存池時天會調用initialize())
          leaf在.page中聲明實例變量,.java聲明get\set方法(可有可無),t4自動生成代碼初始化
          leaf實現PageBeginRenderListener接口,在頁面render之前初始化參數,可防止空指針異常
          hide獲得轉頁頁面對象
          leaf.page不用任何聲明,.java提供抽象方法和元數據
          leaf.page中inject頁面屬性,.java中提供抽象方法
          hide查找class順序
          leaffull-1As indicated in the page specification
          leaffull-2searching the packages listed in the application specification
          leaffull-3The application specification's org.apache.tapestry.default-page-class property
          leaffull-4The global property org.apache.tapestry.default-page-class
          hide4種監聽方法
          leafpublic type method(parameters)
          leafpublic type method(IRequestCycle cycle, parameters)
          leafpublic type method()
          leafpublic type method(IRequestCycle cycle)
          hidesnippets
          leafactivate()不會立即轉頁,它僅保存頁面對象引用在IRequestCycle中。listener執行結束后才會轉業。
          hide使用元數據inject頁面和屬性,可以不用在.page中進行聲明
          leaf獲得頁面使用@injectPage("pageName")
          leaft4中若發現該類包含一個未實現的“getXXX”方法,會默認產生一個實例變量XXX。該實例變量沒有初始化方法,可以在getXXX()聲明@InitialValue("literal:initValue")解決
          leaf每個頁面對象都報含一個Map,保存bean。(沒有則自動創建,返回頁面池時bean自動銷毀1)若要在.page中獲得一個已定義的Bean,使用beans前綴調用。例如:beans.beanId.beanProperty。
          leafFor、Foreach使用時,要在.page中對<source>集合對象內的元素聲明<property>。以方便t4,生成get、set方法。
          hidetapestry組件
          hideDrectLink與ExternalLink區別
          leaf1.DirectLink涉及session,它有一個布爾型參數stateful來選擇stateful 和 stateless,默認為true即stateful,而ExternalLink僅僅是stateless,不能選擇
          leaf2.DirectLink通過Listener監聽方法將參數“扔”給下一個頁面,只要定義了跳轉頁面就OK,參數自動扔到跳轉頁面里。而ExternalLink通過下一個頁面實現IExternalPage接口及activateExternalPage方法接收參數 DirectLink接收參數時要注意,返回值是Void,要符合監聽方法規則
          leaf3.DirectLink用DirectService,ExternalLink用ExternalService。另外Form提交用的是DirectService。

          posted on 2006-03-11 08:50 都市淘沙者 閱讀(1100) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 南漳县| 江孜县| 南阳市| 安国市| 庆阳市| 烟台市| 望谟县| 潞城市| 沾益县| 绍兴县| 晴隆县| 额敏县| 五家渠市| 北辰区| 普兰店市| 章丘市| 涟源市| 曲周县| 神木县| 西盟| 清徐县| 晋中市| 南江县| 花垣县| 城口县| 会同县| 茌平县| 鹰潭市| 高邑县| 醴陵市| 松江区| 来宾市| 扶余县| 淮滨县| 且末县| 买车| 延边| 永吉县| 辽阳市| 星子县| 紫金县|