SSJS variables vs. scope variables
Posted: July 14, 2014 Filed under: Uncategorized | Tags: server side javascript, ssjs, XPages Leave a commentRecently, I ran into a strange issue that had me scratching my head for longer than I’d care to admit. I created a server side javascript object that contained a function, something like this:
var myVar = { load : function() { print ("performing some sort of function"); } }
This ssjs object contained a set of functions that were used in conjunction with one another to perform various functions.
In some cases, these functions needed to grab some data from a viewScope variable, so I figured it made perfect sense to have a key name that was consistent with my ssjs object. I had a button that was setting the value like so:
viewScope.myVar = "foo";
Innocent enough, right?
According to the XPages runtime, apparently not, because I ended up with a message like this:
Error calling method 'load()' on an object of type 'String [JavaScript Object]'
OK, so what happens if we change our scope variable from viewScope to sessionScope?
sessionScope.myVar = "foo";
Same result:
Error calling method 'load()' on an object of type 'String [JavaScript Object]'
My assumption is, this has something to do with the way these objects are serialized. If someone has a better explanation, I’d love to hear it.
In the meantime, don’t give scope variable keys the same name as server side javascript variable.