Ext-GWT (GXT) простая попытка REST не работает

#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.