Как работает подкачка SmartGWT?

Может кто-нибудь объяснить мне, как работает подкачка в SmartGWT?

Я вижу, как это работает в витрине, но я просто не могу найти это задокументировано в любом месте. (Информации в документации javadoc недостаточно, чтобы понять, что происходит.)

У меня есть ListGrid и настраиваемый источник данных, который взаимодействует с моим сервером.

Допустим, я хочу установить размер страницы 25 записей в ListGrid.

Что мне нужно сделать:

  • в ListGrid?
  • в моем настраиваемом источнике данных (имеет доступ к объектам DSRequest и DSResponse)?
  • на моем сервере?

Какие параметры отправляет клиент SmartGWT на сервер, и какие параметры клиент SmartGWT ожидает взамен?


person ivo    schedule 20.05.2010    source источник


Ответы (1)


Если вы используете Smart GWT LGPL:

Пожалуйста, прочтите Javadocs RestDataSource, поскольку он подробно объясняет это: http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/data/RestDataSource.html

Также ознакомьтесь с примером RestDataSource: http://www.smartclient.com/smartgwt/showcase/#featured_restfulds

Если вы используете Smart GWT EE, то 1) Если вы используете коннектор SQL, тогда у вас есть 0 кода для записи на сервере, поскольку код на стороне сервера Smart GWT позаботится о связывании привязки данных с таблицей базы данных. 2) Если вам нужен режим управления привязкой данных сервера, вы можете вызвать собственный API-интерфейс сервера при прокрутке (выборке) или при вставке / обновлении / удалении. Взгляните на источник этого образца: http://www.smartclient.com/smartgwtee/showcase/#javabeans

Нажмите кнопку «Просмотр источника» и изучите источник класса SupplyItemDMI. Обратите внимание, как вы можете получить параметры начальной и конечной строк запроса.

// By default, for a DSRequest of type "fetch", a method named "fetch" is invoked.  
// You can customize this via the <serverObject> declaration.  
public DSResponse fetch(DSRequest dsRequest)  
    throws Exception {  
   log.info("procesing DMI fetch operation");  

    // Fetch a List of matching SupplyItem Beans from some pre-existing Java object model  
    // provided by you, represented by "SupplyItemStore" in this example  
    List matchingItems =  
        SupplyItemStore.findMatchingItems((Long) dsRequest.getFieldValue("itemID"),  
                (String) dsRequest.getFieldValue("itemName"));  

    // this implementation shows data paging (returning only ranges of requested records)  
    long startRow = dsRequest.getStartRow();  
    long endRow = dsRequest.getEndRow();  

    long totalRows = matchingItems.size();  
    DSResponse dsResponse = new DSResponse();  
    dsResponse.setTotalRows(totalRows);  
    dsResponse.setStartRow(startRow);  

    endRow = Math.min(endRow, totalRows);  
    dsResponse.setEndRow(endRow);  

    // trim the data to the requested range of records.  In a real application, the startRow  
    // and endRow would be passed to the ORM layer or to SQL for maximum efficiency.  
    List results;  
    if (totalRows > 0) {  
        results = matchingItems.subList((int) dsResponse.getStartRow(),  
                (int) dsResponse.getEndRow());  
    } else {  
        results = matchingItems;  
    }  

    // just return the List of matching beans  
    dsResponse.setData(results);  

    return dsResponse;  
}
person Sanjiv Jivan    schedule 21.05.2010