Package org.springframework.web.servlet.tags.form

# Class AbstractDataBoundFormElementTag

java.lang.Object
jakarta.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:
  `IterationTag`, `JspTag`, `Tag`, `TryCatchFinally`, `Serializable`, `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` and `id` properties. Provides subclasses with utility methods for accessing the `BindStatus` of their bound value and also for `interacting` with the `TagWriter`.

Since:
  2.0
Author:
  Rob Harrop, Juergen Hoeller
See Also:
  - Serialized Form

## Field Summary

Fields
Modifier and Type
Field
Description
`protected static final 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 jakarta.servlet.jsp.tagext.TagSupport

`pageContext`

### Fields inherited from interface jakarta.servlet.jsp.tagext.IterationTag

`EVAL_BODY_AGAIN`

### Fields inherited from interface jakarta.servlet.jsp.tagext.Tag

`EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE`

## Constructor Summary

Constructors
Constructor
Description
`AbstractDataBoundFormElementTag()`

## Method Summary

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 the `BindStatus` instance.
`protected BindStatus`
`getBindStatus()`
Get the `BindStatus` for this tag.
`protected final Object`
`getBoundValue()`
Get the bound value.
`final PropertyEditor`
`getEditor()`
Exposes the `PropertyEditor` for `EditorAwareTag`.
`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 the `NestedPathTag`.
`protected final String`
`getPath()`
Get the `resolved` property path for the `form object`.
`protected PropertyEditor`
`getPropertyEditor()`
Get the `PropertyEditor`, 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 final String`
`processFieldValue(String name, String value, String type)`
Process the given form field through a `RequestDataValueProcessor` 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 the `form object`.
`protected void`
`writeDefaultAttributes(TagWriter tagWriter)`
Writes the default set of attributes to the supplied `TagWriter`.

### 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 jakarta.servlet.jsp.tagext.TagSupport

`doAfterBody, doEndTag, findAncestorWithClass, getParent, getValue, getValues, release, removeValue, setPageContext, setParent, setValue`

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

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

## Field Details

### 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 as `NestedPathTag.NESTED_PATH_VARIABLE_NAME`.

See Also:
  - Constant Field Values

## Constructor Details

### AbstractDataBoundFormElementTag

public AbstractDataBoundFormElementTag()

## Method Details

### setPath

public void setPath(String path)
Set the property path from the `form object`. May be a runtime expression.

### getPath

protected final String getPath() throws JspException
Get the `resolved` property path for the `form object`.

Throws:
  `JspException`

### setId

public void setId(@Nullable 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 class `TagSupport`

### getId

@Nullable public String getId()
Get the value of the '`id`' attribute.

Overrides:
  `getId` in class `TagSupport`

### writeDefaultAttributes

protected void writeDefaultAttributes(TagWriter tagWriter) throws JspException
Writes the default set of attributes to the supplied `TagWriter`. Further, abstract subclasses should override this method to add in any additional default attributes but must remember to call the `super` method.

Concrete subclasses should call this method when/if they want to render default attributes.

Parameters:
  `tagWriter` - the `TagWriter` to which any attributes are to be written
Throws:
  `JspException`

### resolveId

@Nullable 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

@Nullable 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

@Nullable 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 the `BindStatus` for this tag.

Throws:
  `JspException`

### getNestedPath

@Nullable protected String getNestedPath()
Get the value of the nested path that may have been exposed by the `NestedPathTag`.

### 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

@Nullable protected final Object getBoundValue() throws JspException
Get the bound value.

Throws:
  `JspException`
See Also:
  - `getBindStatus()`

### getPropertyEditor

@Nullable protected PropertyEditor getPropertyEditor() throws JspException
Get the `PropertyEditor`, if any, in use for value bound to this tag.

Throws:
  `JspException`

### getEditor

@Nullable public final PropertyEditor getEditor() throws JspException
Exposes the `PropertyEditor` for `EditorAwareTag`.

Use `getPropertyEditor()` for internal rendering purposes.

Specified by:
  `getEditor` in interface `EditorAwareTag`
Returns:
  the current PropertyEditor, or `null` if none
Throws:
  `JspException` - if resolving the editor failed

### convertToDisplayString

protected String convertToDisplayString(@Nullable 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(@Nullable String name, String value, String type)
Process the given form field through a `RequestDataValueProcessor` instance if one is configured or otherwise returns the same value.

### doFinally

public void doFinally()
Disposes of the `BindStatus` instance.

Specified by:
  `doFinally` in interface `TryCatchFinally`
Overrides:
  `doFinally` in class `RequestContextAwareTag`