GlideController functionality in Scoped app
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2021 09:30 AM
Currently I have an error function in a script include... I'm using in global and I want to move this process into a scoped application... I'm using GlideController to take a passed status value 430, 431 etc and use it to lookup a constant. This works fine... but how can I do this in a scoped app... the GlideScopedEvaluator() doesn't seem to work the same way.
Thanks
//this are constants at the top the SI
ERROR430/*old 415*/ = 'The following required fields are missing: ';
ERROR431/*old 416*/ = 'The following field has an incorrect value: ';
ERROR432/*old 417*/ = 'The following record was not found: ';
ERROR433/*old 419*/ = 'The following error occurred: ';
//this is the function that is called and uses those for standard output.
_errorHandle: function(status,messageAddOn,calledFunction){
var message = '';
var getErrorMessage = GlideController;
var errorConstant = 'ERROR' + status;
var errorMessageFound = getErrorMessage.evaluateString(errorConstant);
if (errorMessageFound){
message = errorMessageFound + messageAddOn;
}
else {
message = messageAddOn;
}
var cmxError = new sn_ws_err.ServiceError();
cmxError.setStatus(status);
cmxError.setMessage(message);
cmxError.setDetail("Failure in: " + calledFunction);
return cmxError;
},
- Labels:
-
Scoped App Development
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2021 11:12 AM
It is part of a SI... I didn't think I needed to share the entire script as it's wasn't relevant, I could have indicated it was in a SI. I updated the OP
Using the code above... I'm returned this
TypeError: Cannot read property \"ERROR430\" from undefined.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2021 11:20 AM
try this
STATIC_PROPERTIES: {
ERROR430:'The following required fields are missing: ',
ERROR431:'The following field has an incorrect value: ',
ERROR432:'The following record was not found: ',
ERROR433:'The following error occurred: ',
},
initialize: function() {
},
_errorHandle: function(status, messageAddOn, calledFunction){
var message = '';
var errorConstant = 'ERROR' + status;
var errorMessageFound = this.STATIC_PROPERTIES.errorConstant;
if (errorMessageFound){
message = errorMessageFound + messageAddOn;
} else {
message = messageAddOn;
}
var cmxError = new sn_ws_err.ServiceError();
cmxError.setStatus(status);
cmxError.setMessage(message);
cmxError.setDetail("Failure in: " + calledFunction);
return cmxError;
},

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2021 11:28 AM
Pranesh, this not how Javascript works.
Daniel, the code I shared works perfectly.
var myClass = new MyClass();
var errorObj = myClass._errorHandle(430, 'my_field', 'myFunction');
gs.info(errorObj)
output:
*** Script: [object ServiceError]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2021 11:28 AM
Taking your path... I did this and it worked... script below edited to only show changes
initialize: function() {
//put this back in the initialize and changed the : to = ...
STATIC_PROPERTIES = {
ERROR430:'The following required fields are missing: ',
ERROR431:'The following field has an incorrect value: ',
ERROR432:'The following record was not found: ',
ERROR433:'The following error occurred: ',
}
},
_errorHandle: function(status, messageAddOn, calledFunction){
var message = '';
var errorConstant = 'ERROR' + status;
//removed this.
var errorMessageFound = STATIC_PROPERTIES[errorConstant];

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2021 11:30 AM
You must make sure that you are defining the STATIC_PROPERTIES on the prototype of your class like in my example, perhaps you put them in the wrong place in your code. I promise you, it 100% works.