Version: 23.10
Form Dynamic Data
The Form Dynamic Data service provides forms with dynamic data in real-time while the user is interacting with the form.
Service Invoke Parameters
Parameters are not nullable except where otherwise indicated.
Parameter | Description |
---|---|
svcDef | SvcDef A service definition value object. |
txn | Txn Nullable. A transaction record value object. |
request | HttpServletRequest A HTTP servlet request. |
user | User Nullable. An authenticated user. |
Script Result
The script returns a JSON string value to be bound into the HTML form's data model.
Error Handling
If your Groovy script throws an error, the FormDynamicDataServlet
will return a HTTP 500
error code back to the form. It is up to the form to handle the error returned. The system logs the error to the Journey Manager database event log specifying an event type of 'Error'
.
Templates
Service
import com.avoka.core.groovy.GroovyLogger as logger
import com.avoka.tm.vo.*
import javax.servlet.http.*
class FluentDynamicData {
/*
* Perform Form Dynamic Data service call.
*
* returns: REST response text data
*/
String invoke(SvcDef svcDef, Txn txn, HttpServletRequest request, User user) {
// TODO: replace with data lookup call
String data = '''{
"address": {
"firstLine": "123 Wall Street"
}
}'''
return data
}
}
Unit Test Template
import com.avoka.core.groovy.GroovyLogger as logger
import com.avoka.tm.svc.*
import com.avoka.tm.test.*
import com.avoka.tm.util.*
import com.avoka.tm.vo.*
import org.junit.Test
class UnitTest extends AbstractJUnitTest {
/*
* Perform service unit test
*
* throws: exception if unit test fails
*/
@Test
void testAddressFirstLine() throws Exception {
Txn txn = new MockVoBuilder().createTxnOpened()
MockRequest request = new MockRequest()
Map params = [
"svcDef": svcDef,
"txn": txn,
"request": request,
"user": null
]
String result = (String) new ServiceInvoker(svcDef).invoke(params)
logger.info result
Path path = new Path(result)
assert "123 Wall Street" == path.val("address.firstLine")
}
}