我有一个AjaxPagingNavigator.基本上在某种情况下,重新加载AjaxPagingNavigator页面的列表.发生这种情况时,我只想在列表包含多个页面时呈现导航器.
所以有人知道我可以在哪里附加处理程序,以便我可以在我的AjaxPagingNavigator中检查可见性条件并启用/禁用可见性,以便在导航器通过时更新.ajax是可见还是不可见?
标记:
<div wicket:id="mainWrap">
<div wicket:id="navigator"/>
<div wicket:id="listWrap">
<div wicket:id="list><!-- here be content --></div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
所以我有一个ajax事件刷新"mainWrap",刷新"导航器"以及"列表"和包装.
这是触发整个事件的事件.
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
List foo = null; // do work to get list
model.setFound(found); // update the model (thus updating "list")
target.addComponent(mainWrap);
}
Run Code Online (Sandbox Code Playgroud)
编辑:我知道我可以写
navigator.setVisibility(list.getPageCount() > 1);
Run Code Online (Sandbox Code Playgroud)
在创建导航器之后和更新模型之后,我希望将其封装在AjaxPagingNavigator的子类中.
Mar*_*rst 16
在重写isVisible方法中进行昂贵的计算要小心,因为Wicket会在isVisible每个请求中多次调用- 不计算您可能无意中执行的任何调用.
通常,最好的方法是onConfigure手动覆盖和设置可见性标志.
@Override
void onConfigure() {
super.onConfigure();
setVisible(isVisible() && someExpensiveToCalculateCondition);
}
Run Code Online (Sandbox Code Playgroud)
onConfigure在请求处理期间只调用一次,并调用所有组件,包括那些不onBeforeRender可见的组件(同时仅调用可见组件).