Wicket Web ページ内に、以下を含む WebMarkupContainer がありますListView
。
notifications = new ArrayList<Notification>(...);
ListView listView = new ListView("notification", notifications) {
@Override
protected void populateItem(ListItem item) {
...
}
};
container = new WebMarkupContainer("container");
container.setOutputMarkupId(true);
container.add(listView);
this.add(container);
これWebMarkupContainer
は、画面上でユーザーに表示される項目のリストを動的に更新できるようにするために用意されています。これは、ユーザーがリンクをクリックするか、コンテナーを incoming に追加することで可能になりますAjaxRequestTarget
。
ここで、Ajax リクエストなしでリストを更新する必要があります。
public void refresh() {
List<Notification> newNotifications = ...
notifications.addAll(0, newNotifications);
}
このメソッドはランタイム環境で呼び出され、Web ページのプライベート フィールド (最後のコードと同じもの) である通知のリストに新しいオブジェクトが含まれます。これらの新しいアイテムをユーザーに表示したい。コンテナーを更新 (または再レンダリング) することはできますか?
私は Wicket を初めて使用するので、同じ結果を達成するためのより良い方法があれば、教えていただければ幸いです。