我正在使用GWT,构建一个表。
我希望其中的个字段成为EditTextCell。它最初呈现为OK,但当我单击它使其变为TextInputCell时,我在Eclipse中看到以下异常:
15:13:22.428 [ERROR] [xxx] Uncaught exception escaped
com.google.gwt.core.client.JavaScriptException: (TypeError): Object [object Text] has no method 'focus'
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:237)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:132)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:214)
at sun.reflect.GeneratedMethodAccessor252.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
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:167)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:281)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:531)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352)
at java.lang.Thread.run(Thread.java:680)
相关代码为:
private void buildTable() {
// Create a celltable
final CellTable<Person> personTable = new CellTable<Person>(KEY_PROVIDER);
// Create name column
final EditTextCell nameCell = new EditTextCell();
Column<Person, String> nameColumn = new Column<Person, String>(nameCell) {
@Override
public String getValue(Person person) {
return person.getName();
}
};
nameColumn.setFieldUpdater(new FieldUpdater<Person,String>() {
public void update(int index, Person object, String value) {
System.out.println("field updater called");
}
});
// Make the name column sortable.
nameColumn.setSortable(true);
personTable.addColumn(nameColumn, "Name");
// ... and then code for other columns...
}
有人知道我为什么会看到这样的例外吗?
我不知道这个特定错误的原因是什么,但我也遇到了这个问题。
我能够使用DataProvider来解决这个问题,在我的案例中,更具体地说是AsyncDataProvideer。但是,您可以在示例中使用ListDataProvider。您可以在Google代码开发人员指南中找到有关DataProviders的更多信息。
您可能需要检查GWTShowcase页面,并检查示例java代码。