Wicket:没有额外文件的AjaxLazyLoadPanel

时间:2016-06-13 17:27:09

标签: wicket

我正在寻找一种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>

1 个答案:

答案 0 :(得分: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>