Как обновить Wicket-Listview с помощью AjaxLink? - PullRequest
0 голосов
/ 28 февраля 2012

Я хочу обновить свой ListView с NewsEntries через Ajax-Link. У меня есть ссылка на каждый месяц, и по клику я хочу показать новости за конкретный месяц.

Я пробовал этот урок, но он не работает: 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, ни в моей консоли eclipse. Я как бы застрял прямо сейчас и не знаю, в чем дело.

1 Ответ

6 голосов
/ 28 февраля 2012

Вы должны заключить ваш ListView в WebMarkupContainer и обновить этот контейнер вместо ListView.

WebMarkupContainer wmc = new WebMarkupContainer("listWmc");
add(wmc);

// init your listView
// ...

wmc.add(listView);
...