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