PROBLEM
I have used test/client only datasources successfully (no errors), but when I use an SQL datasource, I get the Javascript error below.
To reproduce,
1) I chose two items in the first MultiComboBoxItem.
2) I copied them to the second MultiComboBoxItem with the copy button.
3) I removed an item in the second MultiComboBoxItem.
4) I tried to copy the first to the second MultiComboBoxItem again with the copy button.
5) Then I get a Javascript error.
Setup
1. Smart GWT 4.1p built for SmartClient version v9.1p_2014-06-30
2. Firefox
5. if there is a JavaScript error, the stack trace logged in the Developer Console (see FAQ)
6. Here's my sample code:
Here's datasource for the first. The second is almost identical except for the ID.
I have used test/client only datasources successfully (no errors), but when I use an SQL datasource, I get the Javascript error below.
To reproduce,
1) I chose two items in the first MultiComboBoxItem.
2) I copied them to the second MultiComboBoxItem with the copy button.
3) I removed an item in the second MultiComboBoxItem.
4) I tried to copy the first to the second MultiComboBoxItem again with the copy button.
5) Then I get a Javascript error.
Setup
1. Smart GWT 4.1p built for SmartClient version v9.1p_2014-06-30
2. Firefox
5. if there is a JavaScript error, the stack trace logged in the Developer Console (see FAQ)
Code:
Uncaught exception: com.google.gwt.event.shared.UmbrellaException: Exception caught: (TypeError) @com.smartgwt.client.widgets.form.fields.MultiComboBoxItem::setValues([Ljava/lang/Object;)([Java object: [Ljava.lang.String;@1005209717]): _2 is null
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129)
at com.smartgwt.client.core.DataClass.fireEvent(DataClass.java:487)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
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:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:576)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:284)
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:347)
at sun.reflect.GeneratedMethodAccessor65.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
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:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
at java.lang.Thread.run(Thread.java:744)
Caused by: com.google.gwt.core.client.JavaScriptException: (TypeError) @com.smartgwt.client.widgets.form.fields.MultiComboBoxItem::setValues([Ljava/lang/Object;)([Java object: [Ljava.lang.String;@1005209717]): _2 is null
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:249)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:576)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:304)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:107)
at com.smartgwt.client.widgets.form.fields.MultiComboBoxItem.setValues(MultiComboBoxItem.java)
at com.fcm.portfolio.client.Portfolio$1.onClick(Portfolio.java:83)
at com.smartgwt.client.widgets.form.fields.events.ClickEvent.dispatch(ClickEvent.java:111)
at com.smartgwt.client.widgets.form.fields.events.ClickEvent.dispatch(ClickEvent.java:1)
at com.google.gwt.event.shared.GwtEvent.dispatch(GwtEvent.java:1)
at com.google.web.bindery.event.shared.EventBus.dispatchEvent(EventBus.java:40)
at com.google.web.bindery.event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193)
at com.google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88)
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:127)
at com.smartgwt.client.core.DataClass.fireEvent(DataClass.java:487)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
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:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:576)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:284)
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:347)
at sun.reflect.GeneratedMethodAccessor65.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
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:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
at java.lang.Thread.run(Thread.java:744)
Code:
final MultiComboBoxItem A = new MultiComboBoxItem("First");
A.setWidth(100);
A.setMultiple(true);
A.setLayoutStyle(MultiComboBoxLayoutStyle.HORIZONTALREVERSE);
A.setOptionDataSource(DataSource.get("brokerdealers1"));
A.setDisplayField("bdcode");
A.setValueField("bdcode");
A.setAutoFetchData(true);
final MultiComboBoxItem B = new MultiComboBoxItem("Second");
B.setWidth(100);
B.setMultiple(true);
B.setLayoutStyle(MultiComboBoxLayoutStyle.HORIZONTALREVERSE);
B.setOptionDataSource(DataSource.get("brokerdealers2"));
B.setDisplayField("bdcode");
B.setValueField("bdcode");
B.setAutoFetchData(true);
ButtonItem bt = new ButtonItem("Copy");
bt.addClickHandler(new com.smartgwt.client.widgets.form.fields.events.ClickHandler() {
@Override
public void onClick(
com.smartgwt.client.widgets.form.fields.events.ClickEvent event) {
B.setValues((Object []) A.getValues());
}
});
DynamicForm h = new DynamicForm();
h.setFields(A,B,bt);
Canvas c = new Canvas();
c.addChild(h);
Code:
<DataSource tableName="brokerdealers" ID="brokerdealers1" dataSourceVersion="1" serverType="sql" autoDeriveSchema="true" > <fields> <field name="bdid" type="sequence" primaryKey="true" canEdit="false"></field> </fields> <operationBindings> <operationBinding operationType="fetch"> <orderClause> bdcode asc </orderClause> </operationBinding> </operationBindings> </DataSource>