Class BaseTemplate

    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      BaseTemplate comment​(java.lang.Object cs)
      Renders the supplied object using its Object.toString() method inside a comment markup block (<!-- ...
      Closure contents​(Closure cl)
      Wraps a closure so that it can be used as a prototype for inclusion in layouts.
      java.lang.Object fragment​(java.util.Map model, java.lang.String templateText)
      Renders an embedded template as a fragment.
      java.util.Map getModel()  
      java.io.Writer getOut()
      Convenience method to return the current writer instance.
      void includeEscaped​(java.lang.String templatePath)
      Includes contents of another file, not as a template but as escaped text.
      void includeGroovy​(java.lang.String templatePath)
      Includes another template inside this template.
      void includeUnescaped​(java.lang.String templatePath)
      Includes contents of another file, not as a template but as unescaped text.
      java.lang.Object layout​(java.util.Map model, java.lang.String templateName)
      Imports a template and renders it using the specified model, allowing fine grained composition of templates and layouting.
      java.lang.Object layout​(java.util.Map model, java.lang.String templateName, boolean inheritModel)
      Imports a template and renders it using the specified model, allowing fine grained composition of templates and layouting.
      java.lang.Object methodMissing​(java.lang.String tagName, java.lang.Object args)
      This is the main method responsible for writing a tag and its attributes.
      void newLine()
      Adds a new line to the output.
      BaseTemplate pi​(java.util.Map<?,​?> attrs)
      Renders processing instructions.
      abstract java.lang.Object run()  
      java.lang.String stringOf​(Closure cl)  
      java.lang.String toString()  
      java.lang.Object tryEscape​(java.lang.Object contents)
      Escapes the string representation of the supplied object if it derives from CharSequence, otherwise returns the object itself.
      java.io.Writer writeTo​(java.io.Writer out)
      Main method used to render a template.
      BaseTemplate xmlDeclaration()
      Renders an XML declaration header.
      BaseTemplate yield​(java.lang.Object obj)
      Renders the object provided as parameter using its Object.toString() method, The contents is rendered after being escaped for XML, enforcing valid XML output.
      BaseTemplate yieldUnescaped​(java.lang.Object obj)
      Renders the object provided as parameter using its Object.toString() method, The contents is rendered as is, unescaped.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

    • Method Detail

      • getModel

        public java.util.Map getModel()
      • run

        public abstract java.lang.Object run()
      • yieldUnescaped

        public BaseTemplate yieldUnescaped​(java.lang.Object obj)
                                    throws java.io.IOException
        Renders the object provided as parameter using its Object.toString() method, The contents is rendered as is, unescaped. This means that depending on what the Object.toString() method call returns, you might create invalid markup.
        Parameters:
        obj - the object to be rendered unescaped
        Returns:
        this template instance
        Throws:
        java.io.IOException
      • yield

        public BaseTemplate yield​(java.lang.Object obj)
                           throws java.io.IOException
        Renders the object provided as parameter using its Object.toString() method, The contents is rendered after being escaped for XML, enforcing valid XML output.
        Parameters:
        obj - the object to be rendered
        Returns:
        this template instance
        Throws:
        java.io.IOException
      • stringOf

        public java.lang.String stringOf​(Closure cl)
                                  throws java.io.IOException
        Throws:
        java.io.IOException
      • comment

        public BaseTemplate comment​(java.lang.Object cs)
                             throws java.io.IOException
        Renders the supplied object using its Object.toString() method inside a comment markup block (<!-- ... -->). The object is rendered as is, unescaped.
        Parameters:
        cs - the object to be rendered inside an XML comment block.
        Returns:
        this template instance.
        Throws:
        java.io.IOException
      • xmlDeclaration

        public BaseTemplate xmlDeclaration()
                                    throws java.io.IOException
        Renders an XML declaration header. If the declaration encoding is set in the template configuration, then the encoding is rendered into the declaration.
        Returns:
        this template instance
        Throws:
        java.io.IOException
      • pi

        public BaseTemplate pi​(java.util.Map<?,​?> attrs)
                        throws java.io.IOException

        Renders processing instructions. The supplied map contains all elements to be rendered as processing instructions. The key is the name of the element, the value is either a map of attributes, or an object to be rendered directly. For example:

        pi("xml-stylesheet":[href:"mystyle.css", type:"text/css"])

        will be rendered as:

             <?xml-stylesheet href='mystyle.css' type='text/css'?>
         
        Parameters:
        attrs - the attributes to render
        Returns:
        this template instance
        Throws:
        java.io.IOException
      • methodMissing

        public java.lang.Object methodMissing​(java.lang.String tagName,
                                              java.lang.Object args)
                                       throws java.io.IOException
        This is the main method responsible for writing a tag and its attributes. The arguments may be:
        • a closure
        • in which case the closure is rendered inside the tag body
        • a string
        • , in which case the string is rendered as the tag body
        • a map of attributes
        • in which case the attributes are rendered inside the opening tag

        or a combination of (attributes,string), (attributes,closure)

        Parameters:
        tagName - the name of the tag
        args - tag generation arguments
        Returns:
        this template instance
        Throws:
        java.io.IOException
      • includeGroovy

        public void includeGroovy​(java.lang.String templatePath)
                           throws java.io.IOException,
                                  java.lang.ClassNotFoundException
        Includes another template inside this template.
        Parameters:
        templatePath - the path to the included resource.
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • includeEscaped

        public void includeEscaped​(java.lang.String templatePath)
                            throws java.io.IOException
        Includes contents of another file, not as a template but as escaped text.
        Parameters:
        templatePath - the path to the other file
        Throws:
        java.io.IOException
      • includeUnescaped

        public void includeUnescaped​(java.lang.String templatePath)
                              throws java.io.IOException
        Includes contents of another file, not as a template but as unescaped text.
        Parameters:
        templatePath - the path to the other file
        Throws:
        java.io.IOException
      • tryEscape

        public java.lang.Object tryEscape​(java.lang.Object contents)
        Escapes the string representation of the supplied object if it derives from CharSequence, otherwise returns the object itself.
        Parameters:
        contents - an object to be escaped for XML
        Returns:
        an escaped string, or the object itself
      • getOut

        public java.io.Writer getOut()
        Convenience method to return the current writer instance.
        Returns:
        the current writer
      • fragment

        public java.lang.Object fragment​(java.util.Map model,
                                         java.lang.String templateText)
                                  throws java.io.IOException,
                                         java.lang.ClassNotFoundException
        Renders an embedded template as a fragment. Fragments are cached in a template, meaning that if you use the same fragment in a template, it will only be compiled once, but once per template instance. This is less performant than using layout(java.util.Map, String).
        Parameters:
        model - model to be passed to the template
        templateText - template body
        Returns:
        this template instance
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • layout

        public java.lang.Object layout​(java.util.Map model,
                                       java.lang.String templateName)
                                throws java.io.IOException,
                                       java.lang.ClassNotFoundException
        Imports a template and renders it using the specified model, allowing fine grained composition of templates and layouting. This works similarily to a template include but allows a distinct model to be used. This version doesn't inherit the model from the parent. If you need model inheritance, see layout(java.util.Map, String, boolean).
        Parameters:
        model - model to be passed to the template
        templateName - the name of the template to be used as a layout
        Returns:
        this template instance
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • layout

        public java.lang.Object layout​(java.util.Map model,
                                       java.lang.String templateName,
                                       boolean inheritModel)
                                throws java.io.IOException,
                                       java.lang.ClassNotFoundException
        Imports a template and renders it using the specified model, allowing fine grained composition of templates and layouting. This works similarily to a template include but allows a distinct model to be used. If the layout inherits from the parent model, a new model is created, with the values from the parent model, eventually overridden with those provided specifically for this layout.
        Parameters:
        model - model to be passed to the template
        templateName - the name of the template to be used as a layout
        inheritModel - a boolean indicating if we should inherit the parent model
        Returns:
        this template instance
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • contents

        public Closure contents​(Closure cl)
        Wraps a closure so that it can be used as a prototype for inclusion in layouts. This is useful when you want to use a closure in a model, but that you don't want to render the result of the closure but instead call it as if it was a specification of a template fragment.
        Parameters:
        cl - the fragment to be wrapped
        Returns:
        a wrapped closure returning an empty string
      • writeTo

        public java.io.Writer writeTo​(java.io.Writer out)
                               throws java.io.IOException
        Main method used to render a template.
        Specified by:
        writeTo in interface Writable
        Parameters:
        out - the Writer to which this Writable should output its data.
        Returns:
        a writer instance
        Throws:
        java.io.IOException
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object