freemarker.template
Interface TemplateTransformModel
- TemplateModel
- CaptureOutput, HtmlEscape, JythonRuntime, NormalizeNewlines, StandardCompress, XmlEscape
public interface TemplateTransformModel
Objects that implement this interface can be used in a
<transform>
block to perform arbitrary transformations on a part of the template
processing output.
Note that, as of FreeMarker 2.1, TemplateTransform Model
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());
}
};
}
Implementions of
TemplateTransformModel should be thread-safe.
$Id: TemplateTransformModel.java,v 1.36 2003/04/11 20:57:32 revusky Exp $
Writer | getWriter(Writer out, Map args) - Returns a writer that will be used by the engine to feed the
transformation input to the transform.
|
getWriter
public 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.
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.
- a writer to which the engine will feed the transformation
input, or null if the transform does not support nested content (body).
The returned writer can implement the
TransformControl
interface if it needs advanced control over the evaluation of the
transformation body.