私は同じ問題に直面し、ウィケットのみで解決することができました: から派生したクラスを作成しますGenericPanel
(または単にPanel
) を含みます:
IModel<Long> currentOffsetModel
ListView
AjaxLink
- 空
div
(またはその他のプレースホルダー要素)としてWebmarkupContainer
- currentOffsetModel から始まる ListView のリストをロードする LoadalbeDetechable Model
AjaxLink-onClick
メソッドでは、プレースホルダー div をカスタム クラスの新しいオブジェクト ("replaceWith") に置き換え、AjaxLink の可視性を false に設定し、AjaxLink と新しいオブジェクトを AjaxRequestTarget に設定する必要があります。
class EndlessListPanel extends Panel {
WebmarkupContainer placeholder = new WebmarkupContainer("placeholder");
...
AjaxLink<Void> nextListElem = new AjaxLink<Void>("next") {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
int offset = offsetModel.getObject().intValue();
EndlessListPanel next = new NewsPanelList("placeholder",offset + 5);
placeholder.replaceWith(next);
setVisibilityAllowed(false);
target.add(this, next );
}
@Override
protected void onConfigure() {
// The "if" prevents "previous" EndlessListPanel to query the LDM.
if (isVisibilityAllowed()) {
setVisibilityAllowed(!listing.getObject().isReachedEnd());
}
super.onConfigure();
}
};
...
}
対応するhtml:
<改札:パネル>
<ウィケット:コンテナウィケット:id="listItem"/>
<a wicket:id="next">次へ</a>
<div wicket:id="placeholder"></div>
</ウィケット:パネル>