org.springframework.web.servlet.support

## Class BindStatus

- java.lang.Object
- - org.springframework.web.servlet.support.BindStatus

-     public class BindStatus
      extends Object

  Simple adapter to expose the bind status of a field or object. Set as a variable both by the JSP bind tag and Velocity/FreeMarker macros.

  Obviously, object status representations (i.e. errors at the object level rather than the field level) do not have an expression and a value but only error codes and messages. For simplicity's sake and to be able to use the same tags and macros, the same status class is used for both scenarios.

  Author:
    Rod Johnson, Juergen Hoeller, Darren Davison
  See Also:
    `RequestContext.getBindStatus(java.lang.String)`, `BindTag`, `AbstractTemplateView.setExposeSpringMacroHelpers(boolean)`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `BindStatus(RequestContext requestContext, String path, boolean htmlEscape)` Create a new BindStatus instance, representing a field or object status.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `PropertyEditor` | `findEditor(Class valueClass)` Find a PropertyEditor for the given value class, associated with the property that this bound status is currently bound to.
    `Object` | `getActualValue()` Return the actual value of the field, i.e.
    `String` | `getDisplayValue()` Return a suitable display value for the field, i.e.
    `PropertyEditor` | `getEditor()` Return the PropertyEditor for the property that this bind status is currently bound to.
    `String` | `getErrorCode()` Return the first error codes for the field or object, if any.
    `String[]` | `getErrorCodes()` Return the error codes for the field or object, if any.
    `String` | `getErrorMessage()` Return the first error message for the field or object, if any.
    `String[]` | `getErrorMessages()` Return the resolved error messages for the field or object, if any.
    `String` | `getErrorMessagesAsString(String delimiter)` Return an error message string, concatenating all messages separated by the given delimiter.
    `Errors` | `getErrors()` Return the Errors instance (typically a BindingResult) that this bind status is currently associated with.
    `String` | `getExpression()` Return a bind expression that can be used in HTML forms as input name for the respective field, or `null` if not field-specific.
    `String` | `getPath()` Return the bean and property path for which values and errors will be resolved (e.g.
    `Object` | `getValue()` Return the current value of the field, i.e.
    `Class` | `getValueType()` Get the '`Class`' type of the field.
    `boolean` | `isError()` Return if this status represents a field or object error.
    `String` | `toString()`

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

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

- - ### Constructor Detail

    - #### BindStatus

          public BindStatus(RequestContext requestContext,
                    String path,
                    boolean htmlEscape)
                     throws IllegalStateException

      Create a new BindStatus instance, representing a field or object status.
      Parameters:
        `requestContext` - the current RequestContext
        `path` - the bean and property path for which values and errors will be resolved (e.g. "customer.address.street")
        `htmlEscape` - whether to HTML-escape error messages and string values
      Throws:
        `IllegalStateException` - if no corresponding Errors object found

  - ### Method Detail

    - #### getPath

          public String getPath()

      Return the bean and property path for which values and errors will be resolved (e.g. "customer.address.street").

    - #### getExpression

          public String getExpression()

      Return a bind expression that can be used in HTML forms as input name for the respective field, or `null` if not field-specific.

      Returns a bind path appropriate for resubmission, e.g. "address.street". Note that the complete bind path as required by the bind tag is "customer.address.street", if bound to a "customer" bean.

    - #### getValue

          public Object getValue()

      Return the current value of the field, i.e. either the property value or a rejected update, or `null` if not field-specific.

      This value will be an HTML-escaped String if the original value already was a String.

    - #### getValueType

          public Class getValueType()

      Get the '`Class`' type of the field. Favor this instead of '`getValue().getClass()`' since '`getValue()`' may return '`null`'.

    - #### getActualValue

          public Object getActualValue()

      Return the actual value of the field, i.e. the raw property value, or `null` if not available.

    - #### getDisplayValue

          public String getDisplayValue()

      Return a suitable display value for the field, i.e. the stringified value if not null, and an empty string in case of a null value.

      This value will be an HTML-escaped String if the original value was non-null: the `toString` result of the original value will get HTML-escaped.

    - #### isError

          public boolean isError()

      Return if this status represents a field or object error.

    - #### getErrorCodes

          public String[] getErrorCodes()

      Return the error codes for the field or object, if any. Returns an empty array instead of null if none.

    - #### getErrorCode

          public String getErrorCode()

      Return the first error codes for the field or object, if any.

    - #### getErrorMessages

          public String[] getErrorMessages()

      Return the resolved error messages for the field or object, if any. Returns an empty array instead of null if none.

    - #### getErrorMessage

          public String getErrorMessage()

      Return the first error message for the field or object, if any.

    - #### getErrorMessagesAsString

          public String getErrorMessagesAsString(String delimiter)

      Return an error message string, concatenating all messages separated by the given delimiter.
      Parameters:
        `delimiter` - separator string, e.g. ", " or "
        "
      Returns:
        the error message string

    - #### getErrors

          public Errors getErrors()

      Return the Errors instance (typically a BindingResult) that this bind status is currently associated with.
      Returns:
        the current Errors instance, or `null` if none
      See Also:
        `BindingResult`

    - #### getEditor

          public PropertyEditor getEditor()

      Return the PropertyEditor for the property that this bind status is currently bound to.
      Returns:
        the current PropertyEditor, or `null` if none

    - #### findEditor

          public PropertyEditor findEditor(Class valueClass)

      Find a PropertyEditor for the given value class, associated with the property that this bound status is currently bound to.
      Parameters:
        `valueClass` - the value class that an editor is needed for
      Returns:
        the associated PropertyEditor, or `null` if none

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`