我已经创建了一个GWT DataGrid (它本质上就像一个单元格表),并且得到了一个非常奇怪的错误。
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中仍然存在错误。
如何再现错误:
特定于-Selecting的过滤器(无法确定为什么它不一致地对每个列过滤器错误)
-selecting包含隐藏在(.)中的数据的单元格然后键入左右键盘箭头。当用户悬停在单元格上时,行高度会扩大,所有文本都会显示。)
导致/修复错误的原因:
错误似乎来自于代码行:
myDataTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELCTION);当我注释掉这一行时,错误就不再发生了。问题是功能不理想,因为键盘选择与鼠标选择是分开的,并且存在整个"3活动状态“问题。
关于我的代码的:
我正在使用:
-SingleSelectionModel
-DoubleClick DOM处理程序
-SelectionChangeEvent.Handler (即使注释掉了,错误仍然显示出来)
更新的进一步信息:
当我在调试器中继续运行时,它只会像5次一样不停地调用onSelectionChange,然后出错。然后,就像我说的,如果我删除SelectionChange处理程序,它将不会击中我的文件中的任何断点,但是会再次转到GWT文件HasDataPresenter.Class并继续运行,直到它最终在那里出错(循环样式)。
此外,如果我首先选择一个没有省略号(.)的单元格箭在一个有它的人上面,我没有收到错误。只有当我最初选择一个带有(.)然后射出箭头,这样就会出错。
发布于 2014-03-24 23:25:05
既然你没有提供密码,我得猜。
设置/隐藏省略号的方式触发要重新绘制的表。这反过来会触发选择事件(选择相同的单元格)。一旦选定了一个单元格,它就会触发另一个表重绘,等等。
https://stackoverflow.com/questions/22620157
复制相似问题