Class OutputFormat

java.lang.Object
freemarker.core.OutputFormat
Direct Known Subclasses:
CSSOutputFormat, JavaScriptOutputFormat, JSONOutputFormat, MarkupOutputFormat, PlainTextOutputFormat, UndefinedOutputFormat

public abstract class OutputFormat extends Object
Represents an output format. If you need auto-escaping, see its subclass, MarkupOutputFormat.
Since:
2.3.24
See Also:
Configuration.setOutputFormat(OutputFormat), Configuration.setRegisteredCustomOutputFormats(java.util.Collection), MarkupOutputFormat
  • Constructor Details

    • OutputFormat

      public OutputFormat()
  • Method Details

    • getName

      public abstract String getName()
      The short name used to refer to this format (like in the #ftl header).
    • getMimeType

      public abstract String getMimeType()
      Returns the MIME type of the output format. This might comes handy when generating a HTTP response. null null if this output format doesn't clearly corresponds to a specific MIME type.
    • isOutputFormatMixingAllowed

      public abstract boolean isOutputFormatMixingAllowed()
      Tells if this output format allows inserting TemplateMarkupOutputModel-s of another output formats into it.

      If true, the foreign TemplateMarkupOutputModel will be inserted into the output. If the current output format is a MarkupOutputFormat this is done using the MarkupOutputFormat.outputForeign(TemplateMarkupOutputModel, Writer) method, which can implement smart conversions. The default behavior (and the only behavior for non-markup outputs) is to behave as if the surrounding output format was the same; this is usually a bad idea to allow, as such an event could indicate application bugs.

      If this method returns false (recommended), then FreeMarker will try to assimilate the inserted value by converting its format to this format, which will currently (2.3.24) cause exception, unless the inserted value is made by escaping plain text and the target format is non-escaping, in which case format conversion is trivially possible. (It's not impossible that conversions will be extended beyond this, if there will be demand for that.)

      true value is used by UndefinedOutputFormat.

    • toString

      public final String toString()
      Returns the short description of this format, to be used in error messages. Override toStringExtraProperties() to customize this.
      Overrides:
      toString in class Object
    • toStringExtraProperties

      protected String toStringExtraProperties()
      Should be like "foo=\"something\", bar=123"; this will be inserted inside the parentheses in toString(). Shouldn't return null; should return "" if there are no extra properties.