== RenderTemplateAction
include::../variables.adoc[]

The `*RenderTemplateAction*` performs the job of taking a template - that is, a string of code, in a templating language, such as https://velocity.apache.org/engine/1.7/user-guide.html[Velocity], and merging it with a set of data (known as a context), to produce some using-facing output, such as a String of HTML.

=== Examples
==== Canonical Form
[source,java]
----
RenderTemplateInput input = new RenderTemplateInput(qInstance);
input.setSession(session);
input.setCode("Hello, ${name}");
input.setTemplateType(TemplateType.VELOCITY);
input.setContext(Map.of("name", "Darin"));
RenderTemplateOutput output = new RenderTemplateAction.execute(input);
String result = output.getResult();
assertEquals("Hello, Darin", result);
----

==== Convenient Form
[source,java]
----
String result = RenderTemplateAction.renderVelocity(input, Map.of("name", "Darin"), "Hello, ${name}");
assertEquals("Hello, Darin", result);
----

=== RenderTemplateInput
* `code` - *String, Required* - String of template code to be rendered, in the templating language specified by the `type` parameter.
* `type` - *Enum of VELOCITY, Required* - Specifies the language of the template code.
* `context` - *Map of String → Object* - Data to be made available to the template during rendering.

=== RenderTemplateOutput
* `result` - *String* - Result of rendering the input template and context.