org.springframework.web.servlet.tags.form
Class TagWriter

java.lang.Object
  extended by org.springframework.web.servlet.tags.form.TagWriter

public class TagWriter
extends java.lang.Object

Utility class for writing HTML content to a Writer instance.

Intended to support output from JSP tag libraries.

Since:
2.0
Author:
Rob Harrop, Juergen Hoeller

Nested Class Summary
private static class TagWriter.SafeWriter
          Simple Writer wrapper that wraps all IOExceptions in JspExceptions.
private static class TagWriter.TagStateEntry
          Holds state about a tag and its rendered behavior.
 
Field Summary
private  java.util.Stack tagState
          Stores tag state.
private  TagWriter.SafeWriter writer
          The TagWriter.SafeWriter to write to.
 
Constructor Summary
TagWriter(PageContext pageContext)
          Create a new instance of the TagWriter class that writes to the supplied PageContext.
 
Method Summary
 void appendValue(java.lang.String value)
          Close the current opening tag (if necessary) and appends the supplied value as inner text.
private  void closeTagAndMarkAsBlock()
          Closes the current opening tag and marks it as a block tag.
private  TagWriter.TagStateEntry currentState()
           
 void endTag()
          Close the current tag.
 void endTag(boolean enforceClosingTag)
          Close the current tag, allowing to enforce a full closing tag.
 void forceBlock()
          Indicate that the currently open tag should be closed and marked as a block level element.
private  boolean inTag()
           
private  void push(java.lang.String tagName)
          Adds the supplied tag name to the tag state.
 void startTag(java.lang.String tagName)
          Start a new tag with the supplied name.
 void writeAttribute(java.lang.String attributeName, java.lang.String attributeValue)
          Write an HTML attribute with the specified name and value.
 void writeOptionalAttributeValue(java.lang.String attributeName, java.lang.String attributeValue)
          Write an HTML attribute if the supplied value is not null or zero length.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

writer

private final TagWriter.SafeWriter writer
The TagWriter.SafeWriter to write to.


tagState

private final java.util.Stack tagState
Stores tag state. Stack model naturally supports tag nesting.

Constructor Detail

TagWriter

public TagWriter(PageContext pageContext)
Create a new instance of the TagWriter class that writes to the supplied PageContext.

Parameters:
pageContext - the JSP PageContext to obtain the Writer from
Method Detail

startTag

public void startTag(java.lang.String tagName)
              throws JspException
Start a new tag with the supplied name. Leaves the tag open so that attributes, inner text or nested tags can be written into it.

Throws:
JspException
See Also:
endTag()

writeAttribute

public void writeAttribute(java.lang.String attributeName,
                           java.lang.String attributeValue)
                    throws JspException
Write an HTML attribute with the specified name and value.

Be sure to write all attributes before writing any inner text or nested tags.

Throws:
java.lang.IllegalStateException - if the opening tag is closed
JspException

writeOptionalAttributeValue

public void writeOptionalAttributeValue(java.lang.String attributeName,
                                        java.lang.String attributeValue)
                                 throws JspException
Write an HTML attribute if the supplied value is not null or zero length.

Throws:
JspException
See Also:
writeAttribute(String, String)

appendValue

public void appendValue(java.lang.String value)
                 throws JspException
Close the current opening tag (if necessary) and appends the supplied value as inner text.

Throws:
java.lang.IllegalStateException - if no tag is open
JspException

forceBlock

public void forceBlock()
                throws JspException
Indicate that the currently open tag should be closed and marked as a block level element.

Useful when you plan to write additional content in the body outside the context of the current TagWriter.

Throws:
JspException

endTag

public void endTag()
            throws JspException
Close the current tag.

Correctly writes an empty tag if no inner text or nested tags have been written.

Throws:
JspException

endTag

public void endTag(boolean enforceClosingTag)
            throws JspException
Close the current tag, allowing to enforce a full closing tag.

Correctly writes an empty tag if no inner text or nested tags have been written.

Parameters:
enforceClosingTag - whether a full closing tag should be rendered in any case, even in case of a non-block tag
Throws:
JspException

push

private void push(java.lang.String tagName)
Adds the supplied tag name to the tag state.


closeTagAndMarkAsBlock

private void closeTagAndMarkAsBlock()
                             throws JspException
Closes the current opening tag and marks it as a block tag.

Throws:
JspException

inTag

private boolean inTag()

currentState

private TagWriter.TagStateEntry currentState()