#rest #gxt
#rest #gxt
Вопрос:
Я пытаюсь создать простое приложение GXT для извлечения данных с внешнего сервера с помощью REST.
Я нашел следующий пример онлайн, и, хоть убейте, я не могу понять, почему моя таблица не заполняется. Также создается впечатление, что данные не извлекаются. Я был бы признателен за любую помощь! Спасибо.
/*
* Ext GWT 2.2.3 - Ext for GWT
* Copyright(c) 2007-2010, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
package com.extjs.gxt.samples.mail.client.widget;
import java.util.ArrayList;
import java.util.List;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.Style.Orientation;
import com.extjs.gxt.ui.client.data.BaseListLoader;
import com.extjs.gxt.ui.client.data.HttpProxy;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.ModelType;
import com.extjs.gxt.ui.client.data.XmlReader;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
import com.google.gwt.http.client.RequestBuilder;
public class ContactPanel extends ContentPanel {
@SuppressWarnings("rawtypes")
public ContactPanel() {
setHeading("Contacts");
setStyleAttribute("margin", "5px");
setHeaderVisible(true);
setBodyBorder(true);
setAutoHeight(true);
setLayout(new RowLayout(Orientation.VERTICAL));
List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
configs.add(new ColumnConfig("departureCity", "From", 120));
configs.add(new ColumnConfig("arrivalCity", "To", 120));
ColumnConfig config = new ColumnConfig("departureTime", "departureTime", 150);
config.setAlignment(HorizontalAlignment.LEFT);
configs.add(config);
configs.add(new ColumnConfig("arrivalTime", "Arrivaltime", 150));
configs.add(new ColumnConfig("flightNo", "Flightnr", 70));
config = new ColumnConfig("price", "Price", 120);
config.setAlignment(HorizontalAlignment.LEFT);
configs.add(config);
ColumnModel cm = new ColumnModel(configs);
ModelType type = new ModelType();
type.setRoot("flightList");
type.setRecordName("flight");
type.addField("departureCity");
type.addField("arrivalCity");
type.addField("departureTime");
type.addField("arrivalTime");
type.addField("flightNo");
type.addField("price");
// use a http proxy to get the data
RequestBuilder builder = new RequestBuilder(
RequestBuilder.GET,
//"/flights.xml");
"http://tutorialsjava.com/demo/flights.xml");
HttpProxy proxy = new HttpProxy(builder);
// need a loader, proxy, and reader
XmlReader reader = new XmlReader(type);
final BaseListLoader loader = new BaseListLoader(proxy, reader);
ListStore<ModelData> store = new ListStore<ModelData>(loader);
final Grid grid = new Grid<ModelData>(store, cm);
grid.setStyleAttribute("borderTop", "none");
grid.setBorders(true);
grid.setStripeRows(true);
grid.setAutoWidth(true);
grid.setHeight(160);
grid.getView().setForceFit(true);
loader.setRemoteSort(true);
loader.load();
add(grid);
}
}
Комментарии:
1. Вы пробовали отлаживать метод загрузки в HttpProxy.java ?
Ответ №1:
Похоже, что ваш код выполняет междоменный запрос, поэтому использование класса ScriptTagProxy было бы здесь более уместным. В документации GXT говорится:
Обратите внимание, что если вы извлекаете данные со страницы, которая находится в домене, который НЕ совпадает с исходным доменом запущенной страницы, вы должны использовать этот класс, а не HttpProxy.