【发布时间】:2011-11-28 13:05:06
【问题描述】:
从 GWT 2.3 升级到 2.4 在我的一个扩展 CellTable 的类中导致客户端异常。功能没有损失,但例外是不断的开发烦恼。
com.google.gwt.core.client.JavaScriptException: (TypeError): this.insertBefore 不是函数
我已经确定了导致此问题的行,但直到稍后呈现表格时才会引发异常。在行更改处理程序中,当 CellTable 中没有行时,MyCellTable 会删除标题元素。下面是一些在 2.4 中导致异常的示例代码,但在 2.3 中没有。
CellTable<String> table = new CellTable<String>();
table.addColumn(new TextColumn<String>() {
@Override
public String getValue(String object) {
return object;
}
}, "Col");
List<String> list = new ArrayList<String>();
list.add("abc");
list.add("def");
table.setRowData(list);
NodeList<Element> els = table.getElement().getElementsByTagName("THEAD");
if (els.getLength() == 0) {
return;
}
final Element e = els.getItem(0);
e.removeFromParent();
降级到 GWT 2.3 解决了这个问题。我尝试调用 headerElement.setAttribute("style", "display: none") 而不是删除元素,但这看起来不一样(它仍然在那里保留几个像素)。我知道创建一个 CellTable 然后再删除它的一部分可能是一种不好的做法。
GWT 2.4 中是否存在任何可能导致此问题的已知更改?谁能想到解决方法?
【问题讨论】: