2013-05-15 2 views
0

Я хочу загрузить данные с удаленного сервера в сетке. Следующий код:GXT 3 Не удается заполнить сетку

  final RepServiceAsync service = GWT.create(RepService.class); 
      final RepProperties props = GWT.create(RepProperties.class); 


RpcProxy<PagingLoadConfig, PagingLoadResult<ReportsList>> proxy = new RpcProxy<PagingLoadConfig, PagingLoadResult<ReportsList>>() { 
    @SuppressWarnings("unchecked") 
    @Override 
    public void load(PagingLoadConfig loadConfig, AsyncCallback callback) { 
     service.getReports(callback); 
    } 
    }; 

ListStore<ReportsList> store = new ListStore<ReportsList>(props.key()); 
final PagingLoader<PagingLoadConfig, PagingLoadResult<ReportsList>> loader = new PagingLoader<PagingLoadConfig, PagingLoadResult<ReportsList>>(
     proxy); 

loader.setRemoteSort(true); 
loader.addLoadHandler(new LoadResultListStoreBinding<PagingLoadConfig, ReportsList, PagingLoadResult<ReportsList>>(
     store)); 


final PagingToolBar toolBar = new PagingToolBar(50); 
toolBar.getElement().getStyle().setProperty("borderBottom", "none"); 
toolBar.bind(loader); 


ColumnConfig<ReportsList, String> nameCol = new ColumnConfig<ReportsList, String>(
     props.name(), 150, "Name"); 
ColumnConfig<ReportsList, String> pathCol = new ColumnConfig<ReportsList, String>(
     props.path_name(), 150, "Path"); 


List<ColumnConfig<ReportsList, ?>> l = new ArrayList<ColumnConfig<ReportsList, ?>>(); 
l.add(nameCol); 
l.add(pathCol); 

ColumnModel<ReportsList> cm = new ColumnModel<ReportsList>(l); 

Grid<ReportsList> grid = new Grid<ReportsList>(store, cm) { 
    @Override 
    protected void onAfterFirstAttach() { 
     super.onAfterFirstAttach(); 
     Scheduler.get().scheduleDeferred(new ScheduledCommand() { 
      @Override 
      public void execute() { 
       loader.load(); 
      } 
     }); 
    } 
}; 

grid.getView().setForceFit(true); 
grid.setLoadMask(true); 
grid.setLoader(loader); 

RepProperties:

public interface RepProperties extends PropertyAccess<ReportsList> { 
    @Path("id") 
ModelKeyProvider<ReportsList> key(); 
ValueProvider<ReportsList, String> name(); 
ValueProvider<ReportsList, String> path_name(); 
} 

ReportsList код:

public class ReportsList implements Serializable { 
    private static final long serialVersionUID = 1L; 
    int id; 
    String name; 
    String path_name; 

    public ReportsList() {   
    } 

    public ReportsList(int id, String name, String path_name) { 
     super(); 
     this.id = id; 
     this.name = name; 
     this.path_name = path_name; 
    } 

    public int getId() { 
     return id; 
    } 
    public void setId(int id) { 
     this.id = id; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String getPath_name() { 
     return path_name; 
    } 
    public void setPath_name(String path_name) { 
     this.path_name = path_name; 
    } 
} 

GWT Servlet Impl:

public class RepServiceImpl extends RemoteServiceServlet implements RepService { 

    private static final long serialVersionUID = 1L; 
    @EJB 
    private ReportEjb repManager; 

    @Override 
    public List<Report> getReports() { 
     List<Report> reports = null; 

     reports = repManager.getReports(); 
     return reports ; 
    } 
} 

код выполняется без ошибок, запрос к базе данных pe rformed (EJB-call), но сетка не заполнена. В чем может быть проблема?

ответ

0

По моему опыту это обычно означает, что существует исключение, пытаясь поместить данные в саму сетку. Попробуйте подключить LoadExceptionHandler к вашему загрузчику и посмотреть, что он дает вам

например.

public class DebugLoadHandler implements LoadExceptioniHandler<ListLoadConfig> { 
    @Override 
    public void onLoadException(LoadExceptionEvent<ListLoadConfig> event) { 
    Window.alert("Load Exception" + event.getException().getMessage()); 
    } 
} 
Смежные вопросы