0
私はListViewをNewsEntriesでAjax-Link経由で更新したいと思っています。私は毎月のリンクを持っており、クリックすると、特定の月のニュースを見せたい。Wicket-ListviewをAjaxLinkで更新するにはどうすればいいですか?
私はこのチュートリアルを試してみましたが、それは動作しません。ここで http://blog.xebia.com/2008/06/04/wicket-updating-listviews-using-an-ajaxlink/
は私のコードのサンプルです:
add(new Label("title", "News Archive"));
List<NewsEntry> newsEntries = new ArrayList<NewsEntry>();
final ListView<NewsEntry> listview = new ListView<NewsEntry>(
"newsItem", newsEntries)
{
private static final long serialVersionUID = -4294698878214798680L;
@Override
protected void populateItem(final ListItem<NewsEntry> item)
{
Link<Void> link = new Link<Void>("newsItemLinkID")
{
private static final long serialVersionUID = 6176760893378172041L;
@Override
public void onClick()
{
setResponsePage(getPage());
}
};
link.add(new Label("newsItemLinkName", item.getModelObject()
.getHeadline()));
link.setOutputMarkupId(true);
item.add(link);
}
};
listview.setOutputMarkupId(true);
add(listview);
add(new AjaxLink<Object>("march")
{
private static final long serialVersionUID = 974013580329804810L;
@Override
public void onClick(AjaxRequestTarget target)
{
NewsDAO news = new NewsDAO();
listview.setList(news.getNewsFromMonth(MONTH.MARCH));
target.addChildren(listview, Link.class);
}
});
現時点では、何も表示されません。私はエラーもなく、ajax-debugウィンドウもmy Eclipseコンソールもありません。私は今ちょっと固まって、何が間違っているのか分からない。
これは、リストビューの生成されたマークアップを見ると、1つのHTML要素ではなく、複数のアイテム(各アイテムに1つ)であることがわかります。 WicketのAjaxモデルは要素の置き換えに基づいているため、更新するには問題があります。ラップ 'WebMarkupContainer'を追加し、この問題を回避するために更新します。 – biziclop
WebMarkupContainerを更新するにはどうすればよいですか? – lazydaemon
WebMarkupContainerのモデル(CompoundPropertyModel)を更新しようとしています。それは内部的に働いていますが、ページ上で更新されていません。 – lazydaemon