Script Validators API
Example validator code
Below is sample code that shows how to can use the input and how data should be returned:
function callService(context) {
let input1 = context.getFirstParameter("input1");
if (input1 === "api") {
return [{
'key': 'pl.error',
'parameters': [input1, "parameter {0} is invalid"]
}
];
} else if (input1 != null && input1 !== "") {
return [{
'key': 'pl.error',
'parameters': [input1, "another hardcoded parameter"]
}];
} else {
return [];
}
}Input to the script validator
As input (parameter context in the above code) there is an object that provides the following methods:
List<String> getParameters(final String name) - retrieves a specific list from the input data map,
String getFirstParameter(final String name) - retrieves the first element from a specific list in the input data map or returns the value "null",
String getFirstParameter(final String name, final String defaultIfEmpty) - retrieves the first element from a specific list in the input data map, and if it is missing or empty returns the value "defaultIfEmpty",
Map<String, List<String>> getInputParameters() - returns the entire input data map that it stores,
String isVisible(final String id) - retrieves information whether the component with the specified id is visible,
String getValue(final String id) - retrieves the value of the component (also a session variable) with the specified id,
String getData(final String id, final String attribute) - retrieves the value of a specific attribute for the component with the specified id (NOTE! The attributes that can be retrieved depend on the component),
List<Map<String, String>> callService(String name, Map<String, List<String>> input) - allows calling a ServiceProxy,
ValidatorOutput validate(String name, Map<String, List<String>> input) - allows calling a validator,
Example of retrieving a list (e.g. for fields in a repeatable section):
Output from the validator
List of maps: an array of objects containing the fields "key" and "parameters".
Optional fields:
type - the validator type is set to INLINE by default, another option is POPUP,
parameters - variables that we can send to the script validation message
attributes - for example POPUP attributes adding a 'next' button and changing e.g. the value of a component after pressing 'next':
for example attributes for row validation in GesTable:
Sample INLINE validation - GesTable rows
Logging
Logging of input data is automatic.
Manual logging should comply with the description in Logging in ScriptCode
Throwing business exceptions
It is possible to throw a business exception from within the script. Sample code:
Possible methods that can be called on the 'context' object:
Note: you should not call the build() method on this object!!!
Last updated
Was this helpful?
