GWTP: Проблемы с отображением CellTable

Привет, я новичок в GWT, а значит, и в GWTP.

Я пытаюсь поиграть с CellTables, и я решил начать с создания простого, следуя документации GWT по адресу developer.google.com/web-toolkit/doc/2.4/DevGuideUiCellWidgets#celltable. Я адаптировал несколько вещей, чтобы соответствовать дизайну GWTP MVP.

Сначала я создал свою Celltable в файле View.ui.xml:

xmlns:c="urn:import:com.google.gwt.user.cellview.client">
<g:HTMLPanel>
     <c:CellTable pageSize='15' ui:field='cellTable' />
</g:HTMLPanel>

Затем я создал класс Contact:

public class Contact {
    private final String address;
    private final String name;

    public Contact(String name, String address) {
      this.name = name;
      this.address = address;
    }

    public String getAddress() {
        return address;
    }

    public String getName() {
        return name;
    }
}

в моем файле View.java:

@UiField(provided=true) CellTable<Contact> cellTable = new CellTable<Contact>();

public CellTable<Contact> getCellTable() {
     return cellTable;
}

Наконец, в моем файле Presenter.java:

public interface MyView extends View {
   CellTable<Contact> getCellTable();
}

@Override
protected void onReset() {
    super.onReset();

    // Create name column.
    TextColumn<Contact> nameColumn = new TextColumn<Contact>() {
          @Override
          public String getValue(Contact contact) {
            return contact.getName();
          }
        };

    // Create address column.
   TextColumn<Contact> addressColumn = new TextColumn<Contact>() {
          @Override
          public String getValue(Contact contact) {
            return contact.getAddress();
          }
        };

    // Add the columns.
    getView().getCellTable().addColumn(nameColumn, "Name");
    getView().getCellTable().addColumn(addressColumn, "Address");

    // Set the total row count. 
    getView().getCellTable().setRowCount(CONTACTS.size(), true);

    // Push the data into the widget.
    getView().getCellTable().setRowData(0, CONTACTS);
}

Мне кажется, все хорошо, но CellTable не отображается, когда я пробую этот код... И я не получаю ошибок...

Заранее спасибо за помощь!


person Mehdi Dellagi    schedule 15.08.2012    source источник


Ответы (1)


Похоже, вы не используете/не зарегистрировали DataProvider для своей CellTable. Виджеты GWT CellWidget основаны на шаблоне DataProvider/Display. Таким образом, CellTable — это просто дисплей для вашего поставщика данных. Один DataProvider может иметь несколько дисплеев.

Вам не нужно писать:

// Set the total row count. 
getView().getCellTable().setRowCount(CONTACTS.size(), true);

// Push the data into the widget.
getView().getCellTable().setRowData(0, CONTACTS);

Вам необходимо зарегистрировать CellTable в качестве дисплея для вашего DataProvider (например, ListDataProvider), а затем вызывать метод обновления, когда вы обновляете DataProvider новыми данными.

person Kirill Lebedev    schedule 04.10.2012