Hello Servoy,
We found another issue which appears only when the solution runs in Servoy Application Server (in Servoy Developer everything is fine)
Basically, we have on form variable referencing another variable from the same form like this:
- Code: Select all
var SomeNumber = 1;
var OtherFormVar = {prop: SomeNumer, otherProp: 'asdfa'};
The code above is in the same form. When running in Servoy Developer everything is fine. However when we run this in Application Server, we are getting the following errors:
This is from the Server Log
- Code: Select all
org.mozilla.javascript.EcmaError: ReferenceError: "SomeNumber" is not defined.
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3662)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3656)
at org.mozilla.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:3718)
at org.mozilla.javascript.ScriptRuntime.nameOrFunction(ScriptRuntime.java:1753)
at org.mozilla.javascript.ScriptRuntime.name(ScriptRuntime.java:1678)
at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:3752)
at script(OtherFormVar)
at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:2680)
at org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:181)
at org.mozilla.javascript.Context.evaluateString(Context.java:1233)
at com.servoy.j2db.scripting.ScriptVariableScope.evalValue(ScriptVariableScope.java:163)
at com.servoy.j2db.scripting.ScriptVariableScope.put(ScriptVariableScope.java:130)
at com.servoy.j2db.scripting.ScriptVariableScope.put(ScriptVariableScope.java:75)
at com.servoy.j2db.scripting.FormScope.createVars(FormScope.java:75)
at com.servoy.j2db.FormController.initForJSUsage(FormController.java:3829)
at com.servoy.j2db.FormController.initForJSUsage(FormController.java:4209)
at com.servoy.j2db.FormController.getFormScope(FormController.java:4565)
at com.servoy.j2db.dataprocessing.DataAdapterList.<init>(DataAdapterList.java:288)
at com.servoy.j2db.server.headlessclient.dataui.WebDataRenderer.createDataAdapter(WebDataRenderer.java:137)
at com.servoy.j2db.server.headlessclient.dataui.WebDataRendererFactory.placeElements(WebDataRendererFactory.java:306)
at com.servoy.j2db.server.headlessclient.dataui.WebDataRendererFactory.completeRenderers(WebDataRendererFactory.java:114)
at com.servoy.j2db.FormController.createDataRenderers(FormController.java:1705)
at com.servoy.j2db.FormController.init(FormController.java:1545)
at com.servoy.j2db.FormManager.leaseFormPanel(FormManager.java:938)
at com.servoy.j2db.scripting.CreationalPrototype.get(CreationalPrototype.java:172)
at org.mozilla.javascript.ScriptableObject.getProperty(ScriptableObject.java:1641)
at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1428)
at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1417)
at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:3343)
at script.handleOnEditRootNode(handleOnEditRootNode:76)
at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:2680)
at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:166)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:387)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3134)
at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:165)
at com.servoy.j2db.scripting.ScriptEngine.executeFunction(ScriptEngine.java:528)
at com.servoy.j2db.FormController.executeFunction(FormController.java:4063)
at com.servoy.j2db.FormController.executeFunction(FormController.java:3942)
at com.servoy.j2db.FormController.executeFunction(FormController.java:3864)
at com.servoy.j2db.FormController$ScriptExecuter.executeFunction(FormController.java:3719)
at com.servoy.j2db.ui.BaseEventExecutor.fireEventCommand(BaseEventExecutor.java:271)
at com.servoy.j2db.ui.BaseEventExecutor.fireActionCommand(BaseEventExecutor.java:217)
at com.servoy.j2db.server.headlessclient.dataui.WebEventExecutor.onEvent(WebEventExecutor.java:404)
at com.servoy.j2db.server.headlessclient.dataui.WebEventExecutor$2.onEvent(WebEventExecutor.java:174)
at org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:177)
at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:312)
at org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:157)
at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1279)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1358)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1465)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:486)
at com.servoy.j2db.server.servlets.Zl.doGet(Zl.java:7)
at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:138)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:554)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Basically, as if the server is trying to initialize first the second variable while the first one is not yet available?
After the first error, there is a second one:
- Code: Select all
[ERROR] Caught unhandled exception: org.mozilla.javascript.EcmaError: TypeError: Cannot read property "prop" from (someMethodName#580)
The second error is a fall off from the first one - basically the form variable OtherFormVar failed to initialize and is null.
As far as we can tell, we did not have this issue prior to 6.0.6
My question is, why the same code works in Servoy Developer and fails in Servoy App Server? Is our code correct (can we reference one form variable in the initialization of another - seems like this was OK before 6.0.6)