2016-06-13 19 views
1

我正在尋找一種方法來AJAX延遲加載一個面板,而無需添加額外的文件(例如一個新的類和.html文件)。我熟悉使用AjaxLazyLoadPanel。這個想法可以快速地將緩慢加載的頁面部分包裝成惰性加載,而無需編寫大量代碼,也無需將標記分解爲單獨的文件。有沒有可用的解決方案?Wicket:AjaxLazyLoadPanel沒有額外的文件

例如: 我在WebPage,我希望頁面的一部分延遲加載。一種可能的解決方案可能會像wicket:container標籤一樣工作。

<body> 
    <h1>The DIV Below Is Lazy</h1> 
    <wicket:lazy wicket:id="lazyLoadMe"> 
    <div wicket:id="slowLoadingRepeater"> 
     <div wicket:id="item">[stuff goes here]</div> 
    </div> 
    </wicket:lazy> 
    <div wicket:id="loadRightAway"></div> 
</body> 

回答

2

您可能正在尋找片段。 以下示例顯示如何添加AjaxLazyLoadPanel的實例並放置來自相同標記的內容,到目前爲止,您不必爲了分離內容而創建任何其他類或標記文件。完整的工作示例,請https://stash.twinstone.org/projects/WISTF/repos/wicket-examples-6.x/browse

AjaxLazyLoadPanelPage(JAVA)

public class AjaxLazyLoadPanelPage extends WebPage { 

private static final long serialVersionUID = 1L; 

/** 
* @param parameters 
*/ 
public AjaxLazyLoadPanelPage(PageParameters parameters) { 
    super(parameters); 
    add(new AjaxLazyLoadPanel("lazyLoadedPanel") { 

     private static final long serialVersionUID = 1L; 

     @Override 
     public Component getLazyLoadComponent(String componentId) { 
      return new Fragment(componentId, "lazyContentFragment", AjaxLazyLoadPanelPage.this) 
      .add(new Label("text", Model.of("real content"))); 
     } 
    }); 
} 

} 

AjaxLazyLoadPanelPage.html(標記)

<body xmlns:wicket="http://wicket.apache.org"> 

<div> 
    <h1>Ajax Laxy Load Panel Example</h1> 
    <div wicket:id="lazyLoadedPanel">This is a lazy loaded panel</div> 
</div> 

<wicket:fragment wicket:id="lazyContentFragment"> 
    If you see this content, the lazy laoded panel has been replaced with its <span wicket:id="text">[data]</span> after lazy loading. 
</wicket:fragment> 

</body> 
+1

這正是我需要!我讚賞這個工作的例子。 – JeredM