javax.faces.context

## Class ResponseWriter

- java.lang.Object
- - java.io.Writer
  - - javax.faces.context.ResponseWriter

- All Implemented Interfaces:
    Closeable, Flushable, Appendable, AutoCloseable
  Direct Known Subclasses:
    ResponseWriterWrapper

      public abstract class ResponseWriter
      extends Writer

  ResponseWriter is an abstract class describing an adapter to an underlying output mechanism for character-based output. In addition to the low-level `write()` methods inherited from `java.io.Writer`, this class provides utility methods that are useful in producing elements and attributes for markup languages like HTML and XML.

- - ### Field Summary

    - ### Fields inherited from class java.io.Writer

      `lock`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ResponseWriter()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract ResponseWriter` | `cloneWithWriter(Writer writer)` Create and return a new instance of this `ResponseWriter`, using the specified `Writer` as the output destination.
    `void` | `endCDATA()` Close an XML `CDATA` block.
    `abstract void` | `endDocument()` Write whatever text should end a response.
    `abstract void` | `endElement(String name)` Write the end of an element, after closing any open element created by a call to `startElement()`.
    `abstract void` | `flush()` Flush any ouput buffered by the output method to the underlying Writer or OutputStream.
    `abstract String` | `getCharacterEncoding()` Return the character encoding (such as "ISO-8859-1") for this `ResponseWriter`.
    `abstract String` | `getContentType()` Return the content type (such as "text/html") for this `ResponseWriter`.
    `void` | `startCDATA()` Open an XML `CDATA` block.
    `abstract void` | `startDocument()` Write whatever text should begin a response.
    `abstract void` | `startElement(String name, UIComponent component)` Write the start of an element, up to and including the element name.
    `abstract void` | `writeAttribute(String name, Object value, String property)` Write an attribute name and corresponding value, after converting that text to a String (if necessary), and after performing any escaping appropriate for the markup language being rendered.
    `abstract void` | `writeComment(Object comment)` Write a comment containing the specified text, after converting that text to a String (if necessary), and after performing any escaping appropriate for the markup language being rendered.
    `void` | `writeDoctype(String doctype)` Write a string containing the markup specific doctype.
    `void` | `writePreamble(String preamble)` Write a string containing the markup specific preamble.
    `abstract void` | `writeText(char[] text, int off, int len)` Write text from a character array, after any performing any escaping appropriate for the markup language being rendered.
    `abstract void` | `writeText(Object text, String property)` Write an object, after converting it to a String (if necessary), and after performing any escaping appropriate for the markup language being rendered.
    `void` | `writeText(Object text, UIComponent component, String property)` Write an object, after converting it to a String (if necessary), and after performing any escaping appropriate for the markup language being rendered.
    `abstract void` | `writeURIAttribute(String name, Object value, String property)` Write a URI attribute name and corresponding value, after converting that text to a String (if necessary), and after performing any encoding or escaping appropriate to the markup language being rendered.

    - ### Methods inherited from class java.io.Writer

      `append, append, append, close, write, write, write, write, write`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ResponseWriter

          public ResponseWriter()

  - ### Method Detail

    - #### getContentType

          public abstract String getContentType()

      Return the content type (such as "text/html") for this `ResponseWriter`. Note: this must not include the "charset=" suffix.

    - #### getCharacterEncoding

          public abstract String getCharacterEncoding()

      Return the character encoding (such as "ISO-8859-1") for this `ResponseWriter`. Please see the IANA for a list of character encodings.

    - #### flush

          public abstract void flush()
                              throws IOException

      Flush any ouput buffered by the output method to the underlying Writer or OutputStream. This method will not flush the underlying Writer or OutputStream; it simply clears any values buffered by this `ResponseWriter`.

      Specified by:
        `flush` in interface `Flushable`
      Specified by:
        `flush` in class `Writer`
      Throws:
        `IOException`

    - #### startDocument

          public abstract void startDocument()
                                      throws IOException

      Write whatever text should begin a response.

      Throws:
        `IOException` - if an input/output error occurs

    - #### endDocument

          public abstract void endDocument()
                                    throws IOException

      Write whatever text should end a response. If there is an open element that has been created by a call to `startElement()`, that element will be closed first.

      Throws:
        `IOException` - if an input/output error occurs

    - #### startElement

          public abstract void startElement(String name,
                          UIComponent component)
                                     throws IOException

      Write the start of an element, up to and including the element name. Once this method has been called, clients can call the `writeAttribute()` or `writeURIAttribute()` methods to add attributes and corresponding values. The starting element will be closed (that is, the trailing '>' character added) on any subsequent call to `startElement()`, `writeComment()`, `writeText()`, `endElement()`, `endDocument()`, `close()`, `flush()`, or `write()`.

      If the argument component's pass through attributes includes an attribute of the name given by the value of the symbolic constant `Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY`, use that as the element name, instead of the value passed as the first parameter to this method. Care must be taken so that this value is not also rendered when any other pass through attributes on this component are rendered.

      Parameters:
        `name` - Name of the element to be started
        `component` - The `UIComponent` (if any) to which this element corresponds. This component is inspected for its pass through attributes as described in the standard HTML_BASIC `RenderKit` specification.
      Throws:
        `IOException` - if an input/output error occurs
        `NullPointerException` - if `name` is `null`

    - #### endElement

          public abstract void endElement(String name)
                                   throws IOException

      Write the end of an element, after closing any open element created by a call to `startElement()`. Elements must be closed in the inverse order from which they were opened; it is an error to do otherwise.

      If the argument component's pass through attributes includes an attribute of the name given by the value of the symbolic constant `Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY`, use that as the element name, instead of the value passed as the first parameter to this method.

      Parameters:
        `name` - Name of the element to be ended
      Throws:
        `IOException` - if an input/output error occurs
        `NullPointerException` - if `name` is `null`

    - #### writeAttribute

          public abstract void writeAttribute(String name,
                            Object value,
                            String property)
                                       throws IOException

      Write an attribute name and corresponding value, after converting that text to a String (if necessary), and after performing any escaping appropriate for the markup language being rendered. This method may only be called after a call to `startElement()`, and before the opened element has been closed.

      Parameters:
        `name` - Attribute name to be added
        `value` - Attribute value to be added
        `property` - Name of the property or attribute (if any) of the `UIComponent` associated with the containing element, to which this generated attribute corresponds
      Throws:
        `IllegalStateException` - if this method is called when there is no currently open element
        `IOException` - if an input/output error occurs
        `NullPointerException` - if `name` is `null`

    - #### writeURIAttribute

          public abstract void writeURIAttribute(String name,
                               Object value,
                               String property)
                                          throws IOException

      Write a URI attribute name and corresponding value, after converting that text to a String (if necessary), and after performing any encoding or escaping appropriate to the markup language being rendered. When rendering in a WWW environment, the escaping conventions established in the W3C URI spec document <http://www.w3.org/Addressing/URL/uri-spec.html> must be followed. In particular, spaces ' ' must be encoded as %20 and not the plus character '+'. This method may only be called after a call to `startElement()`, and before the opened element has been closed.

      Parameters:
        `name` - Attribute name to be added
        `value` - Attribute value to be added
        `property` - Name of the property or attribute (if any) of the `UIComponent` associated with the containing element, to which this generated attribute corresponds
      Throws:
        `IllegalStateException` - if this method is called when there is no currently open element
        `IOException` - if an input/output error occurs
        `NullPointerException` - if `name` is `null`

    - #### startCDATA

          public void startCDATA()
                          throws IOException

      Open an XML `CDATA` block. Note that XML does not allow nested `CDATA` blocks, though this method does not enforce that constraint. The default implementation of this method takes no action when invoked.

      Throws:
        `IOException` - if input/output error occures

    - #### endCDATA

          public void endCDATA()
                        throws IOException

      Close an XML `CDATA` block. The default implementation of this method takes no action when invoked.

      Throws:
        `IOException` - if input/output error occures

    - #### writeComment

          public abstract void writeComment(Object comment)
                                     throws IOException

      Write a comment containing the specified text, after converting that text to a String (if necessary), and after performing any escaping appropriate for the markup language being rendered. If there is an open element that has been created by a call to `startElement()`, that element will be closed first.

      Parameters:
        `comment` - Text content of the comment
      Throws:
        `IOException` - if an input/output error occurs
        `NullPointerException` - if `comment` is `null`

    - #### writePreamble

          public void writePreamble(String preamble)
                             throws IOException

      Write a string containing the markup specific preamble. No escaping is performed. The default implementation simply calls through to `Writer.write(java.lang.String)` .

      The implementation makes no checks if this is the correct place in the response to have a preamble, nor does it prevent the preamble from being written more than once.

      Parameters:
        `preamble` - Text content of the preamble
      Throws:
        `IOException` - if an input/output error occurs
      Since:
        2.2

    - #### writeDoctype

          public void writeDoctype(String doctype)
                            throws IOException

      Write a string containing the markup specific doctype. No escaping is performed. The default implementation simply calls through to `Writer.write(java.lang.String)` .

      The implementation makes no checks if this is the correct place in the response to have a doctype, nor does it prevent the doctype from being written more than once.

      Parameters:
        `doctype` - Text content of the doctype
      Throws:
        `IOException` - if an input/output error occurs
      Since:
        2.2

    - #### writeText

          public abstract void writeText(Object text,
                       String property)
                                  throws IOException

      Write an object, after converting it to a String (if necessary), and after performing any escaping appropriate for the markup language being rendered. If there is an open element that has been created by a call to `startElement()`, that element will be closed first.

      Parameters:
        `text` - Text to be written
        `property` - Name of the property or attribute (if any) of the `UIComponent` associated with the containing element, to which this generated text corresponds
      Throws:
        `IOException` - if an input/output error occurs
        `NullPointerException` - if `text` is `null`

    - #### writeText

          public void writeText(Object text,
                       UIComponent component,
                       String property)
                         throws IOException

      Write an object, after converting it to a String (if necessary), and after performing any escaping appropriate for the markup language being rendered. This method is equivalent to `writeText(java.lang.Object,java.lang.String)` but adds a `component` property to allow custom `ResponseWriter` implementations to associate a component with an arbitrary portion of text.

      The default implementation simply ignores the `component` argument and calls through to `writeText(java.lang.Object,java.lang.String)`

      Parameters:
        `text` - Text to be written
        `component` - The `UIComponent` (if any) to which this element corresponds
        `property` - Name of the property or attribute (if any) of the `UIComponent` associated with the containing element, to which this generated text corresponds
      Throws:
        `IOException` - if an input/output error occurs
        `NullPointerException` - if `text` is `null`
      Since:
        1.2

    - #### writeText

          public abstract void writeText(char[] text,
                       int off,
                       int len)
                                  throws IOException

      Write text from a character array, after any performing any escaping appropriate for the markup language being rendered. If there is an open element that has been created by a call to `startElement()`, that element will be closed first.

      Parameters:
        `text` - Text to be written
        `off` - Starting offset (zero-relative)
        `len` - Number of characters to be written
      Throws:
        `IndexOutOfBoundsException` - if the calculated starting or ending position is outside the bounds of the character array
        `IOException` - if an input/output error occurs
        `NullPointerException` - if `text` is `null`

    - #### cloneWithWriter

          public abstract ResponseWriter cloneWithWriter(Writer writer)

      Create and return a new instance of this `ResponseWriter`, using the specified `Writer` as the output destination.

      Parameters:
        `writer` - The `Writer` that is the output destination

Copyright © 1996-2013, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.