GWT-CellTable / Datagrid- BOUND_TO_SELECTION导致错误

时间:2014-03-24 20:41:06

标签: java gwt datagrid selection gwt-celltable

我创建了一个GWT DataGrid(基本上就像一个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.

我在网上搜索时发现这个错误的信息非常少,而且它根本不影响前端,事实上,它完美无缺。然而,当特定情况发生时,它仍会出现日食错误。

如何重现错误:

- 选择特定过滤器(无法识别每个过滤器不一致错误的原因)

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

导致/修复错误的原因:

错误似乎来自代码行:

myDataTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELCTION);

当我评论此行时,错误不再发生。问题是功能然后是不希望的,因为键盘选择与鼠标选择和整个" 3活动状态分开#34;问题存在。

关于我的代码:

我正在使用:

-SingleSelectionModel

-DoubleClick DOM处理程序

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

更新 更多信息:

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

此外,如果我首先选择一个没有省略号(...)的单元格和箭头,那么我就不会收到错误。只有当我最初选择带有(...)和箭头的单元格时,它才会出错。

1 个答案:

答案 0 :(得分:0)

由于您没有提供任何代码,我不得不猜测。

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