org.springframework.beans.propertyeditors

## Class CustomNumberEditor

- java.lang.Object
- - java.beans.PropertyEditorSupport
  - - org.springframework.beans.propertyeditors.CustomNumberEditor

- All Implemented Interfaces:
    PropertyEditor

      public class CustomNumberEditor
      extends PropertyEditorSupport

  Property editor for any Number subclass such as Short, Integer, Long, BigInteger, Float, Double, BigDecimal. Can use a given NumberFormat for (locale-specific) parsing and rendering, or alternatively the default `decode` / `valueOf` / `toString` methods.

  This is not meant to be used as system PropertyEditor but rather as locale-specific number editor within custom controller code, parsing user-entered number strings into Number properties of beans and rendering them in the UI form.

  In web MVC code, this editor will typically be registered with `binder.registerCustomEditor` calls in a custom `initBinder` method.

  Since:
    06.06.2003
  Author:
    Juergen Hoeller
  See Also:
    `Number`, `NumberFormat`, `DataBinder.registerCustomEditor(java.lang.Class<?>, java.beans.PropertyEditor)`, `BaseCommandController.initBinder(javax.servlet.http.HttpServletRequest, org.springframework.web.bind.ServletRequestDataBinder)`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `CustomNumberEditor(Class<? extends Number> numberClass, boolean allowEmpty)` Create a new CustomNumberEditor instance, using the default `valueOf` methods for parsing and `toString` methods for rendering.
    `CustomNumberEditor(Class<? extends Number> numberClass, NumberFormat numberFormat, boolean allowEmpty)` Create a new CustomNumberEditor instance, using the given NumberFormat for parsing and rendering.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `String` | `getAsText()` Format the Number as String, using the specified NumberFormat.
    `void` | `setAsText(String text)` Parse the Number from the given text, using the specified NumberFormat.
    `void` | `setValue(Object value)` Coerce a Number value into the required target class, if necessary.

    - ### Methods inherited from class java.beans.PropertyEditorSupport

      `addPropertyChangeListener, firePropertyChange, getCustomEditor, getJavaInitializationString, getSource, getTags, getValue, isPaintable, paintValue, removePropertyChangeListener, setSource, supportsCustomEditor`

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

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

- - ### Constructor Detail

    - #### CustomNumberEditor

          public CustomNumberEditor(Class<? extends Number> numberClass,
                            boolean allowEmpty)
                             throws IllegalArgumentException

      Create a new CustomNumberEditor instance, using the default `valueOf` methods for parsing and `toString` methods for rendering.

      The "allowEmpty" parameter states if an empty String should be allowed for parsing, i.e. get interpreted as `null` value. Else, an IllegalArgumentException gets thrown in that case.

      Parameters:
        `numberClass` - Number subclass to generate
        `allowEmpty` - if empty strings should be allowed
      Throws:
        `IllegalArgumentException` - if an invalid numberClass has been specified
      See Also:
        `NumberUtils.parseNumber(String, Class)`, `Integer.valueOf(java.lang.String, int)`, `Integer.toString(int, int)`

    - #### CustomNumberEditor

          public CustomNumberEditor(Class<? extends Number> numberClass,
                            NumberFormat numberFormat,
                            boolean allowEmpty)
                             throws IllegalArgumentException

      Create a new CustomNumberEditor instance, using the given NumberFormat for parsing and rendering.

      The allowEmpty parameter states if an empty String should be allowed for parsing, i.e. get interpreted as `null` value. Else, an IllegalArgumentException gets thrown in that case.

      Parameters:
        `numberClass` - Number subclass to generate
        `numberFormat` - NumberFormat to use for parsing and rendering
        `allowEmpty` - if empty strings should be allowed
      Throws:
        `IllegalArgumentException` - if an invalid numberClass has been specified
      See Also:
        `NumberUtils.parseNumber(String, Class, java.text.NumberFormat)`, `NumberFormat.parse(java.lang.String, java.text.ParsePosition)`, `NumberFormat.format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition)`

  - ### Method Detail

    - #### setAsText

          public void setAsText(String text)
                         throws IllegalArgumentException

      Parse the Number from the given text, using the specified NumberFormat.
      Specified by:
        `setAsText` in interface `PropertyEditor`
      Overrides:
        `setAsText` in class `PropertyEditorSupport`
      Throws:
        `IllegalArgumentException`

    - #### setValue

          public void setValue(Object value)

      Coerce a Number value into the required target class, if necessary.
      Specified by:
        `setValue` in interface `PropertyEditor`
      Overrides:
        `setValue` in class `PropertyEditorSupport`

    - #### getAsText

          public String getAsText()

      Format the Number as String, using the specified NumberFormat.
      Specified by:
        `getAsText` in interface `PropertyEditor`
      Overrides:
        `getAsText` in class `PropertyEditorSupport`