当我试图用少于四行的数据更新它时,GWT Datagrid抛出一个索引超出绑定异常

当我试图用少于四行的数据更新它时,GWT Datagrid抛出一个索引超出绑定异常,gwt,datagrid,arraylist,Gwt,Datagrid,Arraylist,我使用的是GWT数据网格。我首先用过滤后的数据绑定网格。单击每行的特定列,我们可以搜索其相关元素。因此,我使用DataProvider使用与单击的元素相关的新数据更新网格。当行数少于四行时,我得到一个索引越界异常。例外情况如下: java.lang.IndexOutOfBoundsException: toIndex = 54 at java.util.ArrayList.subListRangeCheck(ArrayList.java:922) at java.util.Arr

我使用的是GWT数据网格。我首先用过滤后的数据绑定网格。单击每行的特定列,我们可以搜索其相关元素。因此,我使用DataProvider使用与单击的元素相关的新数据更新网格。当行数少于四行时,我得到一个索引越界异常。例外情况如下:

java.lang.IndexOutOfBoundsException: toIndex = 54
    at java.util.ArrayList.subListRangeCheck(ArrayList.java:922)
    at java.util.ArrayList.subList(ArrayList.java:914)
    at com.google.gwt.user.cellview.client.HasDataPresenter.resolvePendingState(HasDataPresenter.java:1370)
    at com.google.gwt.user.cellview.client.HasDataPresenter.resolvePendingState(HasDataPresenter.java:1295)
    at com.google.gwt.user.cellview.client.HasDataPresenter.access$3(HasDataPresenter.java:1062)
    at com.google.gwt.user.cellview.client.HasDataPresenter$2.execute(HasDataPresenter.java:984)
    at com.google.gwt.core.client.impl.SchedulerImpl$Task$.executeScheduled$(SchedulerImpl.java:50)
    at com.google.gwt.core.client.impl.SchedulerImpl.runScheduledTasks(SchedulerImpl.java:228)
    at com.google.gwt.core.client.impl.SchedulerImpl.flushFinallyCommands(SchedulerImpl.java:327)
    at com.google.gwt.core.client.impl.Impl.exit(Impl.java:266)
    at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:257)
    at sun.reflect.GeneratedMethodAccessor120.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
    at java.lang.Thread.run(Thread.java:722)
Please help me with this problem.

这是约翰·拉班卡写的

CellTable在渲染循环中渲染自身,这意味着您可以对范围和/或数据进行多个同步更改,但只能在同步更改结束时渲染一次。但是,该表不是为处理用户代码在渲染循环中实际修改表的情况而设计的

导致这种情况的主要原因如下: 从单元格#render()中修改单元格表 重写CellTable#renderRowValues()并从中修改CellTable 尝试从这些方法中的任何一个访问CellTable中的元素 你在做这些吗?代码有点复杂,因为它针对性能进行了优化,并且有一些特殊情况。当然有可能存在细微的bug


Tiago Neves | 1 Feb 13:16 2011 Picon Gravatar Re:SEVERE:Cell小部件正试图在渲染循环中渲染自己我解决了我的问题。在我的例子中,有时日期是空的,然后它会抛出一个异常。如果在呈现期间抛出任何异常,则会抛出此消息(异常),从而掩盖原始消息。