Java GWT CellTable/Datagrid-绑定\u到\u选择导致错误

Java GWT CellTable/Datagrid-绑定\u到\u选择导致错误,java,gwt,datagrid,selection,gwt-celltable,Java,Gwt,Datagrid,Selection,Gwt Celltable,我已经创建了一个GWT数据网格(它本质上就像一个celltable),并且得到了一个非常奇怪的错误 java.lang.IllegalStateException: A possible infinite loop has been detected in a Cell Widget. This usually happens when your SelectionModel triggers a SelectionChangeEvent when SelectionModel.isSelec

我已经创建了一个GWT数据网格(它本质上就像一个celltable),并且得到了一个非常奇怪的错误

java.lang.IllegalStateException: A possible infinite loop has been detected in a Cell
Widget. This usually happens when your SelectionModel triggers a SelectionChangeEvent 
when SelectionModel.isSelected() is called, which causes the table to redraw continuously.
在搜索网络时,我发现关于这个错误的信息很少,而且它根本不会影响前端,事实上,它工作得非常完美。然而,当特定场景发生时,eclipse中仍然存在错误

如何重现错误:

-选择特定的筛选器(无法确定为什么每个列筛选器的错误不一致)

-选择包含用(…)隐藏的数据的单元格,然后键入键盘左箭头或右箭头。CSS的工作原理是,当用户将鼠标悬停在单元格上时,行高会扩展,所有文本都会显示。)

导致/修复错误的原因:

错误似乎来自代码行:

myDataTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELCTION);
当我注释这一行时,错误不再发生。问题是,由于键盘选择与鼠标选择是分开的,并且存在整个“3活动状态”问题,因此不需要该功能

关于我的代码:

我正在使用:

-单选择模型

-双击DOM处理程序

-SelectionChangeEvent.Handler(即使已注释掉,错误仍会显示)

更新 更多信息:

当我在调试器中执行时,它只会不断调用SelectionChange,大约5次,然后出错。然后,如我所说,如果我删除SelectionChange处理程序,它将不会在我的文件中遇到任何断点,但会再次转到GWT文件HasDataPresenter.Class并继续运行,直到它最终在那里出错(循环样式)


此外,如果我首先选择了一个没有省略号(…)的单元格,并在一个有省略号的单元格上加上箭头,我不会收到错误。只有在我最初选择带有(…)和箭头的单元格时,它才会出错。

因为您并没有提供任何代码,所以我不得不猜测


设置/隐藏省略号的方式会触发要重绘的表。这反过来会触发一个选择事件(选择相同的单元格)。一旦选定一个单元格,它将触发另一个表重画,等等。

在onSelectionChange()中执行什么操作?为什么需要双击处理程序?onSelectionChange和doubleclickhandler都调用相同的本地方法。此方法从URL栏和选定行检索参数,并将使用这些参数重定向到子页面。这样做的原因是,有些页面我们希望在单击datagrid行时重定向,而另一些页面则在单击datagrid行时重定向。我还用更多信息更新了我的问题,请参见问题的底部。是的,我完全理解没有代码您只能做这么多。但我感谢你迄今为止给我的所有帮助!但是,我不太确定它是否与省略号有关,因为按列标题排序时仍然会出现相同的错误。错误似乎随机显示在不同的列上,或者不显示。。。包含列的省略号似乎不影响列是否出错。此外,由于省略号完全是CSS,我不确定这将如何触发java中的表被重新绘制,但我真的不知道。我最大的问题可能是绑定到选择中的什么会导致表被重新绘制?如果你在任何HTML元素上设置了一个新的样式,它会导致刷新。更改排序时,将重新绘制表格。不过,重画本身并不会导致循环。某个地方有一个代码,导致重画后触发选择事件。