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

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

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

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

    都市淘沙者

    荔枝FM Everyone can be host

    統計

    留言簿(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 都市淘沙者 閱讀(1098) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 国产真实伦在线视频免费观看| 日本午夜免费福利视频| 亚洲日韩欧洲乱码AV夜夜摸| 国产青草亚洲香蕉精品久久| 日韩免费毛片视频| 亚洲码和欧洲码一码二码三码| 成人片黄网站A毛片免费| 在线a亚洲老鸭窝天堂av高清| 黄页网站在线看免费| 亚洲午夜电影在线观看| 120秒男女动态视频免费| 亚洲国产精品免费在线观看| 色se01短视频永久免费| 亚洲自国产拍揄拍| 处破痛哭A√18成年片免费| 亚洲日本一线产区和二线 | 一级特黄a大片免费| 久久99亚洲综合精品首页| xxxxx做受大片在线观看免费| 亚洲色精品88色婷婷七月丁香| 成全在线观看免费观看大全| 91亚洲导航深夜福利| 国产精品免费观看久久| 国产成人亚洲精品91专区高清| 亚洲免费在线观看| 拍拍拍无挡免费视频网站| 亚洲综合久久1区2区3区| 免费A级毛片无码免费视| 免费亚洲视频在线观看| 久久久久久久尹人综合网亚洲| 美女被cao网站免费看在线看| 久久精品国产亚洲AV久| 国产网站在线免费观看| 毛片免费在线观看| 亚洲精品无码成人片久久不卡| 伊人久久精品亚洲午夜| 亚洲视频免费在线看| 羞羞视频免费网站入口| 337p日本欧洲亚洲大胆艺术| 国产又黄又爽又猛的免费视频播放| 两个人www免费高清视频|