Decision table call via script is throwing exception error

ShAn21
Tera Guru

Hi Team,

I have created a decision table and want to call it via script include and client script. Script below

Script:
var lang = this.getParameter('sysparm_lang').toString(); //passed from client script
//var lang= 'Java';
var dt = new sn_dt.DecisionTableAPI();
var input = new Object();
input.u_language = lang;
var response = dt.getDecision('b7d1c06647832110251f8657536d43af', input);
return response.result_elements.u_type;

 

This works perfectly fine when I hardcode the value in input.u_language. Eg: input.u_language = "Java";

But when I try to pass it dynamically from the value passed from client script it  shows the below error. 

 

errorJavaException: java.lang.IllegalArgumentException: objectToMap: invalid type class org.mozilla.javascript.NativeJavaObject for object property u_language

 

Any help here is appreciated.

 

Thanks

 

1 ACCEPTED SOLUTION

Karan Chhabra6
Mega Sage
Mega Sage

Hi @ShAn21,

 

this.getParameter() returns an object and using toString() won't work in this case, rather use String();

Please use the below script, it should work fine

 

var lang = this.getParameter('sysparm_lang'); //passed from client script
lang = String(lang);
//var lang= 'Java';
var dt = new sn_dt.DecisionTableAPI();
var input = new Object();
input.u_language = lang;
var response = dt.getDecision('b7d1c06647832110251f8657536d43af', input);
return response.result_elements.u_type;

 

 

https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB0826476

 

If my answer has helped with your question, please mark it as correct and helpful

 

Thanks!

View solution in original post

1 REPLY 1

Karan Chhabra6
Mega Sage
Mega Sage

Hi @ShAn21,

 

this.getParameter() returns an object and using toString() won't work in this case, rather use String();

Please use the below script, it should work fine

 

var lang = this.getParameter('sysparm_lang'); //passed from client script
lang = String(lang);
//var lang= 'Java';
var dt = new sn_dt.DecisionTableAPI();
var input = new Object();
input.u_language = lang;
var response = dt.getDecision('b7d1c06647832110251f8657536d43af', input);
return response.result_elements.u_type;

 

 

https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB0826476

 

If my answer has helped with your question, please mark it as correct and helpful

 

Thanks!