熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Tapestry組件使用總結

2022-06-13   來源: Java核心技術 

  關鍵字: Link類組件
    Tapestry總共有種標准的link組件:
    GenericLink ActionLink DirectLinkServiceLink ExternalLink和PageLink
    *disabled參數 公有參數disabled=true時鏈接不可用

  A) GenericLink 組件
    eg
    <a @GenericLink>百度</a>
    用於跳轉到應用程序范圍以外的鏈接

  B) ExternalLink 組件
    eg
    <a @ExternalLink page=LogDetails parameters=ognl:new javalangObject[]{itemid}>
      <span jwcid=@Insert value=ognl:itemname>日志名稱</span>
    </a>
    帶參數的頁面跳轉不涉及session使用service=external
    *parameters屬性用以傳遞數組類型的參數(Object[]{})
    *page參數表示所要跳轉到的頁面類(LogDetails頁面類)
    使用ExternalLink時所要跳轉到的頁面類必須繼承IExternalPage接口並實現一個方法
    Java代碼 復制代碼

   LogDetailsjava
       public abstract class LogDetails extends BasePage implements IExternalPage {
      
         
      
       public void activateExternalPage(Object[] parameters  IRequestCycle cycle){
       thissetLogId((Integer) parameters[]); //獲取傳遞進來的參數並執行所需操作
       }
       }

  LogDetailsjava
    public abstract class LogDetails extends BasePage implements IExternalPage {

  

  public void activateExternalPage(Object[] parameters  IRequestCycle cycle){
    thissetLogId((Integer) parameters[]); //獲取傳遞進來的參數並執行所需操作
    }
    }

  IRequestCycle類型的參數cycle表示當前訪問該頁面的requestCycle

  C) PageLink 組件
    eg
    <a @PageLink page=UserInfo>個人設置</a>
    相當於不帶參數的ExternalLink組件不過使用的是service=page

  D) DirectLink 組件
    eg
    <a jwcid=@DirectLink listener=listener:logSelect parameters=itemid>
      <span jwcid=@Insert value=ognl:itemname>日志名稱</span>
    </a>
    Java代碼 復制代碼

   Logjava
       public IPage logSelect(Integer id){
       LogDetails logDetails = getLogDetails();
       logDetailssetLogId(id);
       return logDetails;
       }

  Logjava
    public IPage logSelect(Integer id){
    LogDetails logDetails = getLogDetails();
    logDetailssetLogId(id);
    return logDetails;
    }

  DirectLink組件表現為一個HTML<a>元素用來提供一個URL當用戶點擊時觸發頁面中一個特定的監聽方法使用service=direct
    涉及sessionDirectLink擁有一個boolean類型的stateful參數來選擇stateful或stateless該參數默認為true即stateful
    DirectLink通過listener監聽方法將參數給下一個頁面這與ExternalLink的實現IExternalPage接口以及activateExternalPage方法接收參數不同
    關於DirectLink使用session的示例:
    <a jwcid=@DirectLink listener=listener:logSelect parameters=ognl:new javalangObject[]{itemid}>
    Java代碼 復制代碼

   Logjava
       public IPage logSelect(IRequestCycle cycle){
       IPage logDetails = cyclegetPage(LogDetails);
       cycleactivate(logDetails);
       }

  Logjava
    public IPage logSelect(IRequestCycle cycle){
    IPage logDetails = cyclegetPage(LogDetails);
    cycleactivate(logDetails);
    }

  Java代碼 復制代碼

   LogDetailsjava
       public void beginResponse(IMarkupWriter writer IRequestCycle cycle) {
       Object[] logObj = cyclegetListenerParameters();
       int logId = ((Integer)logObj[])intValue();
      
       }

  LogDetailsjava
    public void beginResponse(IMarkupWriter writer IRequestCycle cycle) {
    Object[] logObj = cyclegetListenerParameters();
    int logId = ((Integer)logObj[])intValue();
   
    }

  先跳轉到另一個頁面然後可以在該頁面中獲取傳遞過來的參數因為參數隨session傳遞過來了

  E) ActionLink 組件
    eg
    具體不了解也麼用過聽說這個組件在T裡面已經變了樣了以後再學習

  F) ServiceLink 組件
    eg
    <a jwcid=@ServiceLink service=literal:restart>退出</a>
    聽說ServiceLink組件可以使用Tapestry的種服務不過不知道如何使用目前初入Tapestry尚未涉及


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26095.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.