Wicket:没有额外文件的 AjaxLazyLoadPanel

Wicket: AjaxLazyLoadPanel without extra files

我正在寻找一种 AJAX 延迟加载面板而无需添加额外文件(例如新的 Class 和 .html 文件)的方法。我熟悉使用 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>

您可能正在寻找 片段。 以下示例显示了如何添加 AjaxLazyLoadPanel 的实例并放置来自同一标记的内容,到目前为止,您不必创建任何其他 class 或标记文件来分隔内容。完整的工作示例可在 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>