Почему Wicket ListView назначает изменения только последней строке? - PullRequest
1 голос
/ 26 июля 2011

1) Я использую ListView для заполнения 2-х меток из базы данных.В таблице 100 строк, поэтому я получаю 100 <TD> с.Это отлично работает.

this.selectView = new PageableListView("selectedBG", new PropertyModel(this, "selectedList"), 10) {

private static final long serialVersionUID = 1L;

@Override
protected void populateItem(final ListItem item){
    selParentGclOrg = new Label("selParGclOrgId", new PropertyModel(gclOrg, "parentGclOrgId"));
    selParentGclOrg.setOutputMarkupId(true);

    final AjaxLink ajl = new AjaxLink("clickMe"){
        public void onClick(AjaxRequestTarget target){
            chilgGcl = gclOrg.getGclOrgId();
            selectPopUp.show(target);
        }
    };

    ajl.add(selParentGclOrg);
    final Label lblGclOrg = new Label("selGclOrgId", Integer.valueOf(gclOrg.getGclOrgId()).toString());

    item.add(ajl);
    item.add(lblGclOrg);
}
}

2) Одна метка имеет гиперссылку и открывает всплывающее окно, из которого я могу выбрать возможные значения для метки 2. Всплывающее окно открывается идеально.3) Во всплывающем окне возможные значения являются гиперссылками.При нажатии на него закрывается всплывающее окно и отправляется возможное значение на главную страницу.Это работает нормально ... Я думаю.

4) Новое значение присваивается метке 2 с использованием:

target.addComponent(selectView);

Вот где я застреваю.Предполагается, что Wicket изменяет метку в той же строке (по крайней мере, я так думаю), но обновляет метку 2 последней строки.

Что я делаю не так?

Ответы [ 2 ]

4 голосов
/ 26 июля 2011

Я не пробежался по вашей логике для выбора строк, но я верю, что мое решение аналогичной проблемы поможет вам.Проблема в том, что ListView s не обновляют автоматически каждую из строк по отдельности при поступлении запросов AJAX. Я использовал решение , чтобы обернуть весь shebang в WebMarkupContainer.Когда это будет сделано, все будет восстановлено по запросу.

0 голосов
/ 27 июля 2011

Я думаю, что соответствующие части вашего кода отсутствуют в сообщении ... Например:

  • где gclOrg установлено
  • где selParentGclOrg установлено дляModalWindow

Судя по тому, что я вижу, я поставил бы свою ставку на проблему с запуском populateItem после того, как остальной код в вашем классе ... Большая часть вашего кода будет выполняться навремя конструктора или onBeforeRender, populateItem будет вызываться иногда во время рендеринга ... Но это только дикое предположение.

...