AjaxLazyLoadPanel定义:
您可以在其中延迟加载另一个面板的面板。 如果您创建的面板/组件非常繁琐,并且您首先要向用户显示该页面并准备好替换面板,则可以使用此方法。
此功能确实令人印象深刻。 在这里,我们向您展示如何将普通面板转换为功能强大的AjaxLazyLoadPanel
。
原始面板
普通Wicket面板。
add(new PricePanel("price"));
延迟加载面板
转换为Wicket AjaxLazyLoadPanel
。
add(new AjaxLazyLoadPanel("price")
{
@Override
public Component getLazyLoadComponent(String id)
{
return PricePanel(id);
}
});
完成后,现在PricePanel具有延迟加载效果。 好啊
谨防!
此AjaxLazyLoadPanel的缺点之一是它不包含回退版本。 如果禁用了浏览器JavaScript,则惰性图像将永远保持加载状态。
这是一个玩弄它的技巧。
1.将以下代码放入Wicket的应用程序类中
protected void init() {
getRequestCycleSettings().setGatherExtendedBrowserInfo(true);
}
2.检查
WebClientInfo clientInfo = (WebClientInfo)WebRequestCycle.get().getClientInfo();
if(clientInfo.getProperties().isJavaEnabled()){
add(new AjaxLazyLoadPanel("price")
{
@Override
public Component getLazyLoadComponent(String id)
{
return PricePanel("price");
}
});
}else{
add(new PricePanel("price"));
}
如果浏览器支持JavaScript,则上面的函数将运行AjaxLazyLoadPanel函数,否则委托正常请求。
参考
翻译自: https://mkyong.com/wicket/how-do-use-ajaxlazyloadpanel-in-wicket/