TemplateTransformModel (FreeMarker 2.3.35 API)
Description: declaration: package: freemarker.template, interface: TemplateTransformModel

Package freemarker.template

# Interface TemplateTransformModel

All Superinterfaces:
  `TemplateModel`

All Known Implementing Classes:
  `CaptureOutput`, `HtmlEscape`, `JythonRuntime`, `NormalizeNewlines`, `StandardCompress`, `XmlEscape`

public interface TemplateTransformModel extends TemplateModel
"transform" template language data type: user-defined directives (much like macros) specialized on filtering output; you should rather use the newer `TemplateDirectiveModel` instead. This interface will certainly be deprecated in FreeMarker 2.4.

- ## Field Summary

  ### Fields inherited from interface freemarker.template.TemplateModel

  `NOTHING`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Writer`
  `getWriter​(Writer out, Map args)`
  Returns a writer that will be used by the engine to feed the transformation input to the transform.

- ## Method Details

  - ### getWriter

    Writer getWriter​(Writer out, Map args) throws TemplateModelException, IOException
    Returns a writer that will be used by the engine to feed the transformation input to the transform. Each call to this method must return a new instance of the writer so that the transformation is thread-safe.

    This method should not throw `RuntimeException`, nor `IOException` that wasn't caused by writing to the output. Such exceptions should be catched inside the method and wrapped inside a `TemplateModelException`. (Note that setting `Configuration.setWrapUncheckedExceptions(boolean)` to `true` can mitigate the negative effects of implementations that throw `RuntimeException`-s.)

    Parameters:
      `out` - the character stream to which to write the transformed output
      `args` - the arguments (if any) passed to the transformation as a map of key/value pairs where the keys are strings and the arguments are `TemplateModel` instances. This is never `null`. (If you need to convert the template models to POJOs, you can use the utility methods in the `DeepUnwrap` class. Though it's recommended to work with `TemplateModel`-s directly.)
    Returns:
      The `Writer` to which the engine will write the content to transform, or `null` if the transform does not support nested content (body). The returned `Writer` may implements the `TransformControl` interface if it needs advanced control over the evaluation of the nested content. FreeMarker will call `Writer.close()` after the transform end-tag. `Writer.close()` must not close the `Writer` received as the `out` parameter (so if you are using a `FilterWriter`, you must override `FilterWriter.close()`, as by default that closes the wrapped `Writer`). Since 2.3.27 its also allowed to return the `out` writer as is, in which case it won't be closed.
    Throws:
      `TemplateModelException` - If any problem occurs that's not an `IOException` during writing the template output.
      `IOException` - When writing to `out` (the parameter) fails. Other `IOException`-s should be catched in this method and wrapped into `TemplateModelException`.