public interface TemplateTransformModel extends TemplateModel
TemplateDirectiveModel
instead. Altough implementing output filters is more handy with this interface,
this interface will be certainly deprecated as superfluous, starting from
FreeMarker 2.4. But as far as the template engine is concerned, you can use both
equivalently as a user-defined directive.
Note that, as of FreeMarker 2.1, TemplateTransformModel has changed. This is a more powerful implementation. There is a quick-and-dirty way to patch any legacy TemplateTransformModel so that it implements the new API. You simply add the following as your implementation of the getWriter() call:
public Writer getWriter(final Writer out, Map args) { final StringBuffer buf = new StringBuffer(); return new Writer() { public void write(char cbuf[], int off, int len) { buf.append(cbuf, off, len); } public void flush() throws IOException { out.flush(); } public void close() throws IOException { StringReader sr = new StringReader(buf.toString()); StringWriter sw = new StringWriter(); transform(sr, sw); out.write(sw.toString()); } }; }
NOTHING
Modifier and Type | Method and Description |
---|---|
java.io.Writer |
getWriter(java.io.Writer out,
java.util.Map args)
Returns a writer that will be used by the engine to feed the
transformation input to the transform.
|
java.io.Writer getWriter(java.io.Writer out, java.util.Map args) throws TemplateModelException, java.io.IOException
out
- the character stream to which to write the transformed outputargs
- 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.TransformControl
interface if it needs advanced control over the evaluation of the
transformation body.TemplateModelException
java.io.IOException