posts - 2,  comments - 2,  trackbacks - 0

          ActionLink組件

          頁面響應(yīng)時,創(chuàng)建了一個鏈接。如果觸發(fā)了鏈接時,組件ActionLink得到一個監(jiān)聽器(通過調(diào)用方法actionTriggered())。

          DirectLink組件

          DirectLink組件涉及到session,與ExternalLink組件的區(qū)別有兩個:
           
          第一: DirectLink涉及sessionDirectLink擁有一個boolean類型的stateful參數(shù)來選擇statefulstateless,該參數(shù)默認(rèn)為true,即stateful。而ExternalLink卻不涉及sessionExternalLink僅僅是stateless,不能夠選擇。
           
          第二:非常重要的是,DirectLinkExternalLink參數(shù)傳遞方式不一樣。DirectLink通過listener監(jiān)聽方法將參數(shù)“扔”給下一個頁面。而ExternalLink通過在下一個頁面實(shí)現(xiàn)IExternalPage接口以及activateExternalPage方法“接收”參數(shù)。 
            為了實(shí)現(xiàn)分頁功能,我們使用DirectLink組件實(shí)現(xiàn)。在下面的例子,每個頁面我們只顯示10條數(shù)據(jù),那么HQL就只從數(shù)據(jù)庫中查詢出10條數(shù)據(jù)。對于頁面來說,就需要實(shí)現(xiàn)“下一頁”(或“上一頁”)頁面跳轉(zhuǎn),以及向我們的業(yè)務(wù)邏輯層方法傳遞分頁參數(shù)(即當(dāng)前頁碼,以及每頁顯示數(shù)據(jù)數(shù))。
          請看對應(yīng)的
          HTML文件中相關(guān)代碼: 
             <span jwcid="@Conditional" condition="ognl:firstDisable"> 
                   <span jwcid="first">首頁</span> 
                   <span jwcid="previous">上一頁</span> 
             
          </span> 
             
          <span jwcid="@Insert" value="ognl:pageNo" />  
             
          <span jwcid="@Conditional" condition="ognl:lastDisable"> 
                   <span jwcid="next">下一頁</span> 
                   <span jwcid="last">尾頁</span> 
             </span> 
           共 <span jwcid="@Insert" value="ognl:total" />
          page文件中聲明相關(guān)組件: 
            
          <component id="first" type="DirectLink"> 
             <binding name="listener" expression="listeners.changePage"/> 
             <binding name="parameters" expression="new java.lang.Object[]{first,maxResult}"/> 
           </component>
           <component id="previous" type="DirectLink"> 
             <binding name="listener" expression="listeners.changePage"/> 
             <binding name="parameters" expression="new java.lang.Object[]{previous, maxResult}"/>
             <binding name="disabled" expression="previousDisable"/>
           </component>
           <component id="next" type="DirectLink"> 
             <binding name="listener" expression="listeners.changePage"/> 
             <binding name="parameters" expression="new java.lang.Object[]{next, maxResult}"/> 
             <binding name="disabled" expression="nextDisable"/>
           </component>
           <component id="last" type="DirectLink"> 
             <binding name="listener" expression="listeners.changePage"/> 
             <binding name="parameters" expression="new java.lang.Object[]{last,maxResult}"/>
           </component>
            DirectLink組件表現(xiàn)為一個HTML<a>元素,用來提供一個URL,當(dāng)用戶點(diǎn)擊時,觸發(fā)頁面中一個特定的監(jiān)聽方法。
            在實(shí)現(xiàn)分頁頁面跳轉(zhuǎn)的四個組件里,都聲明為同一個listener監(jiān)聽方法。請看相應(yīng)java中的對應(yīng)監(jiān)聽方法changePage的代碼:
          public void changePage(IRequestCycle cycle) { 
             //Tapestry4.0已經(jīng)deprecated了cycle.getListenerParameters()
             Object[] parameters = cycle.getServiceParameters(); 
             //獲取當(dāng)前頁碼 
             Integer ig1 = (Integer) parameters[0]; 
             int i1 = ig1.intValue(); 
             setPageNo(i1); 
             //獲取每頁最大顯示數(shù)目 
             Integer ig2 = (Integer) parameters[1]; 
             int i2 = ig2.intValue(); 
             setMaxResult(i2);
          }
            對于DirectLink,parameters參數(shù)的賦值方式于ExternalLink一樣。這里獲取的是一個數(shù)組,這個數(shù)組包含了兩樣信息:即將跳轉(zhuǎn)的頁碼數(shù),以及即將跳轉(zhuǎn)的頁面顯示多少條數(shù)據(jù)。
           
          在前面,我們提到過,頁面的java文件在完成頁面表現(xiàn)所需數(shù)據(jù)的處理后,應(yīng)該將其所有成員變量(頁面property)還原為初始值。所以,“當(dāng)前頁碼”以及“每頁最大顯示數(shù)據(jù)”這兩個數(shù)據(jù),我們將它們“保存”在頁面上。當(dāng)點(diǎn)擊觸發(fā)監(jiān)聽方法后,再由頁面來提供下一個頁面的“頁碼”和“每頁最大顯示數(shù)目”。然后再查詢新的maxResult條數(shù)據(jù)。
           
          運(yùn)行效果圖如下:


          ExternalLink組件

          ExternalLink組件使用的是Tapestry9service中的external service。該組件使用External Service 創(chuàng)建繼承了IExternalPage接口的一個鏈接。下面用一個例子說明它的用法。
          <a jwcid="@ExternalLink" page="SuccessPage" parameters='ognl:new java.lang.Object[]{"This is Success Page!", item.id}'disabled="ognl:item.Isable"></a>
          page="SuccessPage"這個參數(shù)的作用,就是指定了將要跳轉(zhuǎn)的頁面名稱,ExternalLink組件的page參數(shù)根據(jù)配置文件tapestry.application文件中的配置找到對應(yīng)的page文件:
          <page name="SuccessPage" specification-path="/WEBINF/SuccessPage.page"/>
          然后在SuccessPage.page文件中,根據(jù):
          <page-specification class="com.ce.tapestry.Success">
          找到對應(yīng)的Success.java文件。在Success.java文件中,我們發(fā)現(xiàn)該類繼承了IExternalPage接口:
          public abstract class Success implements IExternalPage
          以及實(shí)現(xiàn)了activateExternalPage(Object[]IRequestCycle)方法。
           
          對于ExternalLink組件,它必須繼承IExternalPage接口,并實(shí)現(xiàn)public void activateExternalPage(Object[] parameters,IRequestCycle cycle)方法。該方法的參數(shù)Object[]來自該組件的parameters參數(shù)的值。 disabled參數(shù)默認(rèn)為false,當(dāng)為true時,不能被“點(diǎn)擊”。

          GenericLink組件

          組件GenericLink通常用于跳轉(zhuǎn)到應(yīng)用程序范圍以外的鏈接 雖然GenericLink可以用其他組件也能完成,但是GenericLink更靈活:它可以設(shè)置為disabled,象DirectLink或者ActionLink一樣也能包含Rollover組件
          使用方法如下:
          <a jwcid="@GenericLink" href="ognl:item.homepage" disabled="false"/>
          Href參數(shù):其作用很明顯,就是提供一個鏈接地址。從上例可知:從item.homepage取出地址。
          disabled參數(shù):該參數(shù)默認(rèn)為false,當(dāng)為true時,不能被“點(diǎn)擊”。關(guān)于disabled參數(shù),所有link類組件都有,作用均相同。

          PageLink組件

          PageLink組件非常簡單,只需要在page參數(shù)中指明需要跳轉(zhuǎn)到下一個頁面的名字。相當(dāng)于不帶參數(shù)的ExternalLink。不過需要注意的是,PageLinkExternalLink使用的不是同一個service該組件使用了Page Service創(chuàng)建了另外一個鏈接URL
          使用方法請見例子:
          <a jwcid="@PageLink" page="Infos"><img src="images/lyb.gif" width="50" height="18" border="0">
          </a>
          跳轉(zhuǎn)到以下的URLhttp://localhost:8080/hello/helloworld?service=page/Upload

          ServiceLink組件

          創(chuàng)建任意不帶有參數(shù)的引擎服務(wù),ServiceLink組件用法與ActionLinkPageLinkDirectLink等組件相似,但常常與具體的應(yīng)用服務(wù)一起使用。Service參數(shù)是要調(diào)用的EngineService對象的名稱。(Body

          以上的Link類組件,都需要在Body組件范圍內(nèi)使用。


          posted on 2006-01-27 22:25 yyp 閱讀(1243) 評論(2)  編輯  收藏 所屬分類: Tapestry


          FeedBack:
          # re: 頁面跳轉(zhuǎn)類組件:ActionLink, DirectLink, ExternalLink, GenericLink, ServiceLink
          2007-02-13 14:58 | ithink
          不錯好文章,正是我要看的:)  回復(fù)  更多評論
            
          # re: 頁面跳轉(zhuǎn)類組件:ActionLink, DirectLink, ExternalLink, GenericLink, ServiceLink
          2007-08-11 20:33 | dreamstone
          寫的不錯。  回復(fù)  更多評論
            

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


          網(wǎng)站導(dǎo)航:
           
          <2006年1月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 子长县| 铜陵市| 南木林县| 墨江| 百色市| 连山| 维西| 新乐市| 清新县| 兴海县| 银川市| 乌拉特中旗| 闵行区| 金湖县| 桐乡市| 吉安县| 漠河县| 太谷县| 德令哈市| 察雅县| 铜鼓县| 河北省| 弥勒县| 武平县| 武安市| 湘潭县| 庐江县| 延长县| 临猗县| 陆河县| 屏南县| 北流市| 碌曲县| 瑞安市| 肇庆市| 华阴市| 麟游县| 天全县| 天津市| 富阳市| 绍兴县|