0

グリッド内のリモート サーバーからデータをロードしたいと考えています。次のコード:

            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 サーブレット実装:

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 ;
    }
}

コードはエラーなしで実行され、データベースへのクエリが実行されます ( EJB 呼び出し ) が、グリッドは読み込まれません。問題は何でしょうか?

4

1 に答える 1

0

私の経験では、これは通常、データをグリッド自体に入れようとしているときに例外が発生したことを意味します。LoadExceptionHandler をローダーにアタッチしてみて、何が得られるかを確認してください

例えば

public class DebugLoadHandler implements LoadExceptioniHandler<ListLoadConfig> {
  @Override
    public void onLoadException(LoadExceptionEvent<ListLoadConfig> event) {
    Window.alert("Load Exception" + event.getException().getMessage());
  }
}
于 2013-05-22T17:57:54.463 に答える