Class AbstractDataBoundFormElementTag
- java.lang.Object
- javax.servlet.jsp.tagext.TagSupport
- org.springframework.web.servlet.tags.RequestContextAwareTag
- org.springframework.web.servlet.tags.HtmlEscapingAwareTag
- org.springframework.web.servlet.tags.form.AbstractFormTag
- org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag
- All Implemented Interfaces:
Serializable
,IterationTag
,JspTag
,Tag
,TryCatchFinally
,EditorAwareTag
- Direct Known Subclasses:
AbstractHtmlElementTag
public abstract class AbstractDataBoundFormElementTag extends AbstractFormTag implements EditorAwareTag
Base tag for all data-binding aware JSP form tags.Provides the common
path
andid
properties. Provides sub-classes with utility methods for accessing theBindStatus
of their bound value and also forinteracting
with theTagWriter
.- Since:
- 2.0
- Author:
- Rob Harrop, Juergen Hoeller
- See Also:
- Serialized Form
Field Summary
Fields Modifier and Type Field Description protected static String
NESTED_PATH_VARIABLE_NAME
Name of the exposed path variable within the scope of this tag: "nestedPath".Fields inherited from class org.springframework.web.servlet.tags.RequestContextAwareTag
logger, REQUEST_CONTEXT_PAGE_ATTRIBUTE
Fields inherited from class javax.servlet.jsp.tagext.TagSupport
pageContext
Fields inherited from interface javax.servlet.jsp.tagext.IterationTag
EVAL_BODY_AGAIN
Fields inherited from interface javax.servlet.jsp.tagext.Tag
EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE
Constructor Summary
Constructors Constructor Description AbstractDataBoundFormElementTag()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected String
autogenerateId()
Autogenerate the 'id
' attribute value for this tag.protected String
convertToDisplayString(Object value)
Get a display String for the given value, converted by a PropertyEditor that the BindStatus may have registered for the value's Class.void
doFinally()
Disposes of theBindStatus
instance.protected BindStatus
getBindStatus()
Get theBindStatus
for this tag.protected Object
getBoundValue()
Get the bound value.PropertyEditor
getEditor()
Exposes thePropertyEditor
forEditorAwareTag
.String
getId()
Get the value of the 'id
' attribute.protected String
getName()
Get the value for the HTML 'name
' attribute.protected String
getNestedPath()
Get the value of the nested path that may have been exposed by theNestedPathTag
.protected String
getPath()
Get theresolved
property path for theform object
.protected PropertyEditor
getPropertyEditor()
Get thePropertyEditor
, if any, in use for value bound to this tag.protected String
getPropertyPath()
Build the property path for this tag, including the nested path but not prefixed with the name of the form attribute.protected String
processFieldValue(String name, String value, String type)
Process the given form field through aRequestDataValueProcessor
instance if one is configured or otherwise returns the same value.protected String
resolveId()
Determine the 'id
' attribute value for this tag, autogenerating one if none specified.void
setId(String id)
Set the value of the 'id
' attribute.void
setPath(String path)
Set the property path from theform object
.protected void
writeDefaultAttributes(TagWriter tagWriter)
Writes the default set of attributes to the suppliedTagWriter
.Methods inherited from class org.springframework.web.servlet.tags.form.AbstractFormTag
createTagWriter, doStartTagInternal, evaluate, getDisplayString, getDisplayString, isDefaultHtmlEscape, writeOptionalAttribute, writeTagContent
Methods inherited from class org.springframework.web.servlet.tags.HtmlEscapingAwareTag
htmlEscape, isHtmlEscape, isResponseEncodedHtmlEscape, setHtmlEscape
Methods inherited from class org.springframework.web.servlet.tags.RequestContextAwareTag
doCatch, doStartTag, getRequestContext
Methods inherited from class javax.servlet.jsp.tagext.TagSupport
doAfterBody, doEndTag, findAncestorWithClass, getParent, getValue, getValues, release, removeValue, setPageContext, setParent, setValue
Field Detail
NESTED_PATH_VARIABLE_NAME
protected static final String NESTED_PATH_VARIABLE_NAME
Name of the exposed path variable within the scope of this tag: "nestedPath". Same value asNestedPathTag.NESTED_PATH_VARIABLE_NAME
.- See Also:
- Constant Field Values
Constructor Detail
AbstractDataBoundFormElementTag
public AbstractDataBoundFormElementTag()
Method Detail
setPath
public void setPath(String path)
Set the property path from theform object
. May be a runtime expression.
getPath
protected final String getPath() throws JspException
Get theresolved
property path for theform object
.- Throws:
JspException
setId
public void setId(String id)
Set the value of the 'id
' attribute.May be a runtime expression; defaults to the value of
getName()
. Note that the default value may not be valid for certain tags.- Overrides:
setId
in classTagSupport
getId
public String getId()
Get the value of the 'id
' attribute.- Overrides:
getId
in classTagSupport
writeDefaultAttributes
protected void writeDefaultAttributes(TagWriter tagWriter) throws JspException
Writes the default set of attributes to the suppliedTagWriter
. Further abstract sub-classes should override this method to add in any additional default attributes but must remember to call thesuper
method.Concrete sub-classes should call this method when/if they want to render default attributes.
- Parameters:
tagWriter
- theTagWriter
to which any attributes are to be written- Throws:
JspException
resolveId
protected String resolveId() throws JspException
Determine the 'id
' attribute value for this tag, autogenerating one if none specified.- Throws:
JspException
- See Also:
getId()
,autogenerateId()
autogenerateId
protected String autogenerateId() throws JspException
Autogenerate the 'id
' attribute value for this tag.The default implementation simply delegates to
getName()
, deleting invalid characters (such as "[" or "]").- Throws:
JspException
getName
protected String getName() throws JspException
Get the value for the HTML 'name
' attribute.The default implementation simply delegates to
getPropertyPath()
to use the property path as the name. For the most part this is desirable as it links with the server-side expectation for data binding. However, some subclasses may wish to change the value of the 'name
' attribute without changing the bind path.- Returns:
- the value for the HTML '
name
' attribute - Throws:
JspException
getBindStatus
protected BindStatus getBindStatus() throws JspException
Get theBindStatus
for this tag.- Throws:
JspException
getNestedPath
protected String getNestedPath()
Get the value of the nested path that may have been exposed by theNestedPathTag
.
getPropertyPath
protected String getPropertyPath() throws JspException
Build the property path for this tag, including the nested path but not prefixed with the name of the form attribute.- Throws:
JspException
- See Also:
getNestedPath()
,getPath()
getBoundValue
protected final Object getBoundValue() throws JspException
Get the bound value.- Throws:
JspException
- See Also:
getBindStatus()
getPropertyEditor
protected PropertyEditor getPropertyEditor() throws JspException
Get thePropertyEditor
, if any, in use for value bound to this tag.- Throws:
JspException
getEditor
public final PropertyEditor getEditor() throws JspException
Exposes thePropertyEditor
forEditorAwareTag
.Use
getPropertyEditor()
for internal rendering purposes.- Specified by:
getEditor
in interfaceEditorAwareTag
- Returns:
- the current PropertyEditor, or
null
if none - Throws:
JspException
- if resolving the editor failed
convertToDisplayString
protected String convertToDisplayString(Object value) throws JspException
Get a display String for the given value, converted by a PropertyEditor that the BindStatus may have registered for the value's Class.- Throws:
JspException
processFieldValue
protected final String processFieldValue(String name, String value, String type)
Process the given form field through aRequestDataValueProcessor
instance if one is configured or otherwise returns the same value.
doFinally
public void doFinally()
Disposes of theBindStatus
instance.- Specified by:
doFinally
in interfaceTryCatchFinally
- Overrides:
doFinally
in classRequestContextAwareTag