SNAPSHOT_v8.3d_2012-09-25/PowerEdition Deployment (built 2012-09-25)
IE 9.0.8112.16421 on Vista in dev mode.
When I attempt a save on a ListGrid, it throws a JavaScript error. This happens only when I have a field with a server-side validator attached to it. When I take out the server-side validator, it works fine. In fact, the server-side validator never gets called because of the JS error.
From the Developer Console, this is the JS error:
17:31:04.206:MDN7:WARN:Log:Error:
'Object doesn't support property or method 'getDataPath''
in http://host:port/portal/portal/sc/modules/ISC_Core.js
at line 4302
and in the Eclipse "Dev Mode" console, I get pretty much the same JS error:
17:31:04.211 [ERROR] [portal] 17:31:04.206:MDN7:WARN:Log:Error: 'Object doesn't support property or method 'getDataPath'' in http://host:port/portal/portal/sc/modules/ISC_Core.js at line 4302
com.smartgwt.client.core.JsObject$SGWT_WARN: 17:31:04.206:MDN7:WARN:Log:Error: 'Object doesn't support property or method 'getDataPath'' in http://harish-dev:8085/portal/portal/sc/modules/ISC_Core.js at line 4302
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:105)
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:292)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:546)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
at java.lang.Thread.run(Thread.java:662)
There are no server-side errors.
To reproduce the error, run the sample, then click on the edit button. Modify the "description" field in the grid, then click save. This should bring up a Javascript error.
Note that if you only modify the "Note" field, it works fine since there is no server-side validator attached to the "note" field.
This is the server-side Data Source.
This is the server-side code:
I have a simple dummy server-side validator which always returns true for now.
P.S.: This error does not occur in SNAPSHOT_v8.3d_2012-08-01/PowerEdition Deployment.
Thanks,
--Harish.
Please let me know if you need any information I might have missed.
IE 9.0.8112.16421 on Vista in dev mode.
When I attempt a save on a ListGrid, it throws a JavaScript error. This happens only when I have a field with a server-side validator attached to it. When I take out the server-side validator, it works fine. In fact, the server-side validator never gets called because of the JS error.
From the Developer Console, this is the JS error:
17:31:04.206:MDN7:WARN:Log:Error:
'Object doesn't support property or method 'getDataPath''
in http://host:port/portal/portal/sc/modules/ISC_Core.js
at line 4302
and in the Eclipse "Dev Mode" console, I get pretty much the same JS error:
17:31:04.211 [ERROR] [portal] 17:31:04.206:MDN7:WARN:Log:Error: 'Object doesn't support property or method 'getDataPath'' in http://host:port/portal/portal/sc/modules/ISC_Core.js at line 4302
com.smartgwt.client.core.JsObject$SGWT_WARN: 17:31:04.206:MDN7:WARN:Log:Error: 'Object doesn't support property or method 'getDataPath'' in http://harish-dev:8085/portal/portal/sc/modules/ISC_Core.js at line 4302
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:105)
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:292)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:546)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
at java.lang.Thread.run(Thread.java:662)
There are no server-side errors.
To reproduce the error, run the sample, then click on the edit button. Modify the "description" field in the grid, then click save. This should bring up a Javascript error.
Note that if you only modify the "Note" field, it works fine since there is no server-side validator attached to the "note" field.
Code:
/** * This is the entry point method. */ public void onModuleLoad() { KeyIdentifier debugKey = new KeyIdentifier(); debugKey.setCtrlKey(true); debugKey.setKeyName("D"); Page.registerKey(debugKey, new KeyCallback() { public void execute(String keyName) { SC.showConsole(); } }); VLayout layout = new VLayout(); final ListGrid g = new ListGrid(); g.setWidth(550); g.setHeight(224); g.setShowAllRecords(true); g.setCellHeight(22); g.setDataSource(DataSource.get("testCase")); g.setAutoFetchData(true); g.setCanEdit(true); g.setEditEvent(ListGridEditEvent.NONE); g.setRowEndEditAction(RowEndEditAction.SAME); g.setAutoSaveEdits(false); IButton editBtn = new IButton("Edit"); editBtn.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() { @Override public void onClick(ClickEvent event) { g.startEditing(); } }); IButton saveBtn = new IButton("Save"); saveBtn.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() { @Override public void onClick(ClickEvent event) { g.endEditing(); g.saveAllEdits(); } }); layout.addMember(editBtn); layout.addMember(saveBtn); layout.addMember(g); layout.draw(); }
Code:
<?xml version="1.0" encoding="UTF-8"?> <DataSource ID="testCase" serverType="generic"> <fields> <field name="name" type="text" title="Name" primaryKey="true" canEdit="false"> </field> <field name="description" type="text" title="Description"> <validators> <validator type="serverCustom"> <serverObject lookupStyle="new" className="mypkg.DummyValidator"/> <errorMessage>Invalid Description</errorMessage> </validator> </validators> </field> <field name="note" type="text" title="Note"> </field> </fields> <serverObject lookupStyle="new" className="mypkg.TestService" /> <operationBindings> <binding operationType="fetch" serverMethod="testFetch"> </binding> <binding operationType="update" serverMethod="testUpdate"> </binding> </operationBindings> </DataSource>
Code:
public class TestService { public List testFetch(DSRequest request) { List rows = new ArrayList(); Map row = new HashMap(); row.put("name", "Test Name"); row.put("description", "Test Description"); row.put("note", "Test Note"); rows.add(row); return rows; } public List testUpdate(DSRequest request) { List rows = new ArrayList(); Map row = new HashMap(); row.put("name", request.getOldValues().get("name")); if (request.getValues().get("description") != null) { row.put("description", request.getValues().get("description")); } else { row.put("description", request.getOldValues().get("description")); } if (request.getValues().get("note") != null) { row.put("note", request.getValues().get("note")); } else { row.put("note", request.getOldValues().get("note")); } rows.add(row); return rows; } }
Code:
public class DummyValidator { public boolean condition(Object value, Validator validator, String fieldName, Map record, DataSource ds) throws Exception { return true; } }
Thanks,
--Harish.
Please let me know if you need any information I might have missed.
Comment