java - gxt 中的分页网格

标签 java hibernate gxt

我正在使用 GXT 2.1.1 开发分页网格,我正在使用 hibernate 从数据库表中检索值。我的代码是

 public class ExampleSampleTrip extends Composite
 {

     final GreetingServiceAsync service = GWT.create(GreetingService.class);


    static class BeanModel implements ModelData
    {

        @Override
        public <X> X get(String property)
        {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public Map<String, Object> getProperties()
        {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public Collection<String> getPropertyNames()
        {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public <X> X remove(String property)
        {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public <X> X set(String property, X value)
        {
            // TODO Auto-generated method stub
            return null;
        }

    }

    List<ColumnConfig>                         configs       = null;
    Grid<BeanModel>                   grid          = null;
    ContentPanel                              gridPanel     = null;

    // loader
    PagingLoader<PagingLoadResult<ModelData>> loader        = null;
    PagingToolBar                             pagingToolBar = null;
    ListStore<BeanModel>              store         = null;

    public ExampleSampleTrip()
    {
        initComponents();
    }

    public List<ColumnConfig> getColumns()
    {
        if ( configs == null)
        {
             configs = new ArrayList<ColumnConfig>();

               ColumnConfig column = new ColumnConfig(); 

               column.setId("vehicle");
               column.setHeader("Vehicle");
               column.setWidth(100);
               configs.add(column);

               column = new ColumnConfig();
               column.setId("orgin");
               column.setHeader("Orgin");
               column.setWidth(100);
               configs.add(column);

               column = new ColumnConfig();
               column.setId("destination");
               column.setHeader("Destination");
               column.setWidth(100);
               configs.add(column);

               column = new ColumnConfig();
               column.setId("route");
               column.setHeader("Route");
               column.setWidth(100);
               configs.add(column);

               column = new ColumnConfig();
               column.setId("status");
               column.setHeader("Status");
               column.setWidth(100);
               configs.add(column);

               column = new ColumnConfig();
               column.setId("currentlocation");
               column.setHeader("Current Location");
               column.setWidth(100);
               configs.add(column);

               ColumnModel cm = new ColumnModel(configs);

        }
        return configs;
    }

    public Grid<BeanModel> getGrid()
    {
        if (grid == null)
        {
            grid = new Grid<BeanModel>(getStore(), new ColumnModel(getColumns()));           
            grid.addListener(Events.Attach, new Listener<GridEvent<BeanModel>>() {
                public void handleEvent(GridEvent<BeanModel> be)
                {
                    PagingLoadConfig config = new BasePagingLoadConfig();                
                    config.setLimit(50);
                    getLoader().load(config);        
                }
            });

            grid.setBorders(true);

        }
        return grid;
    }

    public ContentPanel getGridPanel()
    {
        if (gridPanel == null)
        {
            gridPanel = new ContentPanel();
            gridPanel.setFrame(true);

            gridPanel.setHeading("Paging Grid");
            gridPanel.setLayout(new FitLayout());
            gridPanel.add(getGrid());
            gridPanel.setSize(600, 350);
            gridPanel.setBottomComponent(getPagingToolBar());
        }
        return gridPanel;
    }

    public PagingLoader<PagingLoadResult<ModelData>> getLoader()
    {
        if (loader == null)
        {
            RpcProxy<List<Vehicle>> proxy=new RpcProxy<List<Vehicle>>(){

                @Override
                protected void load(Object loadConfig,
                        AsyncCallback<List<Vehicle>> callback) {

                     service.getVehicles(callback);

                }

            };

            loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy,new BeanModelReader());
            loader.setRemoteSort(true);
           loader.load();
        }
        return loader;
    }

    public PagingToolBar getPagingToolBar()
    {
        if (pagingToolBar == null)
        {
            pagingToolBar = new PagingToolBar(50);
            pagingToolBar.bind(getLoader());
        }
        return pagingToolBar;
    }

    public ListStore<BeanModel> getStore()
    {
        if (store == null)
        {
            store = new ListStore<BeanModel>(getLoader());     
        }
        return store;
    }

    private void initComponents()
    {
        initWidget(getGridPanel());
    }

}

它仅显示网格,不显示值。

我的实现文件是

try {
    // This step will read hibernate.cfg.xml and prepare hibernate for
    // use

    SessionFactory sessionFactory = new Configuration().configure()
                .buildSessionFactory();
    System.out.println("Within select");
    session = sessionFactory.openSession();
    List dataList = session.createQuery(" from Vehicle").list();

    dataListArray = new ArrayList<Vehicle>(dataList.size());
    for (int i = 0; i < dataList.size(); i++) {
        Vehicle datalst = (Vehicle) dataList.get(i);
        dataListArray.add(datalst);
    }
    //cutomerList.add((Customer) dataList);
    System.out.println("size---->" + dataListArray.size());

    return dataListArray;

} catch (Exception e) {
    System.out.println(e.getMessage());
} finally {
    session.flush();
    session.close();
}

最佳答案

如果我在这里无知,请忽略我,但是静态类 BeanModel 是做什么用的?

它实现了 ModelData,但实现是空的。 如果这是您的网格正在使用的 BeanModel,那么您的网格将无法访问数据。 如果是这种情况,请让您的 BeanModel 扩展 ModelData。

或者您是使用 BeanModelMarker 接口(interface)和 @BEAN 注释的车辆 Bean?

希望我没有误解您的情况。

关于java - gxt 中的分页网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3633637/

相关文章:

java - 如果我们有足够的处理器来服务所有线程,Thread.yield() 会做任何事情吗?

java - hibernate 错误 : ids for this class must be manually assigned before calling save():

java - 使用内存中的 PostgreSQL

java - 设置 Horizo​​ntalPanel 上的对齐方式。外部总重量

java - JBPM : couldn't deploy process archives : null

返回 0 的 Java 文件对象大小

java - 使对象有资格被清理

java - @transaction - 回滚失败

ajax - 单元测试/集成测试 GXT 代码的最佳方法是什么?

java - 在 java/gwt 中创建图形或图表?