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

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

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

    posts - 2,  comments - 2,  trackbacks - 0

    ActionLink組件

    頁面響應時,創建了一個鏈接。如果觸發了鏈接時,組件ActionLink得到一個監聽器(通過調用方法actionTriggered())。

    DirectLink組件

    DirectLink組件涉及到session,與ExternalLink組件的區別有兩個:
     
    第一: DirectLink涉及sessionDirectLink擁有一個boolean類型的stateful參數來選擇statefulstateless,該參數默認為true,即stateful。而ExternalLink卻不涉及sessionExternalLink僅僅是stateless,不能夠選擇。
     
    第二:非常重要的是,DirectLinkExternalLink參數傳遞方式不一樣。DirectLink通過listener監聽方法將參數“扔”給下一個頁面。而ExternalLink通過在下一個頁面實現IExternalPage接口以及activateExternalPage方法“接收”參數。 
      為了實現分頁功能,我們使用DirectLink組件實現。在下面的例子,每個頁面我們只顯示10條數據,那么HQL就只從數據庫中查詢出10條數據。對于頁面來說,就需要實現“下一頁”(或“上一頁”)頁面跳轉,以及向我們的業務邏輯層方法傳遞分頁參數(即當前頁碼,以及每頁顯示數據數)。
    請看對應的
    HTML文件中相關代碼: 
       <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文件中聲明相關組件: 
      
    <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組件表現為一個HTML<a>元素,用來提供一個URL,當用戶點擊時,觸發頁面中一個特定的監聽方法。
      在實現分頁頁面跳轉的四個組件里,都聲明為同一個listener監聽方法。請看相應java中的對應監聽方法changePage的代碼:
    public void changePage(IRequestCycle cycle) { 
       //Tapestry4.0已經deprecated了cycle.getListenerParameters()
       Object[] parameters = cycle.getServiceParameters(); 
       //獲取當前頁碼 
       Integer ig1 = (Integer) parameters[0]; 
       int i1 = ig1.intValue(); 
       setPageNo(i1); 
       //獲取每頁最大顯示數目 
       Integer ig2 = (Integer) parameters[1]; 
       int i2 = ig2.intValue(); 
       setMaxResult(i2);
    }
      對于DirectLink,parameters參數的賦值方式于ExternalLink一樣。這里獲取的是一個數組,這個數組包含了兩樣信息:即將跳轉的頁碼數,以及即將跳轉的頁面顯示多少條數據。
     
    在前面,我們提到過,頁面的java文件在完成頁面表現所需數據的處理后,應該將其所有成員變量(頁面property)還原為初始值。所以,“當前頁碼”以及“每頁最大顯示數據”這兩個數據,我們將它們“保存”在頁面上。當點擊觸發監聽方法后,再由頁面來提供下一個頁面的“頁碼”和“每頁最大顯示數目”。然后再查詢新的maxResult條數據。
     
    運行效果圖如下:


    ExternalLink組件

    ExternalLink組件使用的是Tapestry9service中的external service。該組件使用External Service 創建繼承了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"這個參數的作用,就是指定了將要跳轉的頁面名稱,ExternalLink組件的page參數根據配置文件tapestry.application文件中的配置找到對應的page文件:
    <page name="SuccessPage" specification-path="/WEBINF/SuccessPage.page"/>
    然后在SuccessPage.page文件中,根據:
    <page-specification class="com.ce.tapestry.Success">
    找到對應的Success.java文件。在Success.java文件中,我們發現該類繼承了IExternalPage接口:
    public abstract class Success implements IExternalPage
    以及實現了activateExternalPage(Object[]IRequestCycle)方法。
     
    對于ExternalLink組件,它必須繼承IExternalPage接口,并實現public void activateExternalPage(Object[] parameters,IRequestCycle cycle)方法。該方法的參數Object[]來自該組件的parameters參數的值。 disabled參數默認為false,當為true時,不能被“點擊”。

    GenericLink組件

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

    PageLink組件

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

    ServiceLink組件

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

    以上的Link類組件,都需要在Body組件范圍內使用。


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


    FeedBack:
    # re: 頁面跳轉類組件:ActionLink, DirectLink, ExternalLink, GenericLink, ServiceLink
    2007-02-13 14:58 | ithink
    不錯好文章,正是我要看的:)  回復  更多評論
      
    # re: 頁面跳轉類組件:ActionLink, DirectLink, ExternalLink, GenericLink, ServiceLink
    2007-08-11 20:33 | dreamstone
    寫的不錯。  回復  更多評論
      
    <2007年8月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 香蕉视频免费在线播放| 久久WWW免费人成—看片| 国产亚洲精品免费视频播放| 1000部啪啪毛片免费看| 国产日韩一区二区三免费高清| 91丁香亚洲综合社区| 亚洲网站在线观看| 亚洲精品国产字幕久久不卡| 亚洲国产精品13p| 亚洲中久无码不卡永久在线观看| 日本免费网站观看| 国产成人aaa在线视频免费观看| av无码国产在线看免费网站| 国产h肉在线视频免费观看| 久久国产乱子伦免费精品| 2021精品国产品免费观看| 免费视频一区二区| 久久久久久毛片免费播放| 最近中文字幕免费完整| 国产精品色拉拉免费看| 中文字幕无码成人免费视频| 成年女人毛片免费视频| 免费鲁丝片一级在线观看| 免费A级毛片无码A∨男男| 日韩一卡2卡3卡4卡新区亚洲| 亚洲成在人天堂在线| 亚洲AV色吊丝无码| 免费夜色污私人影院网站| a级特黄毛片免费观看| 亚洲精品在线免费观看视频| 成人黄动漫画免费网站视频 | 亚洲人成影院在线无码按摩店| 亚洲成AV人片一区二区| 亚洲国产日韩综合久久精品| 一级特级aaaa毛片免费观看 | 亚洲日本中文字幕| 亚洲国产精品网站在线播放| 国产免费一区二区视频| 在线观看成人免费视频| 亚洲国产综合91精品麻豆| 春暖花开亚洲性无区一区二区|