Package 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.

Since:
  06.06.2003
Author:
  Juergen Hoeller
See Also:
  - `Number`
  - `NumberFormat`
  - `org.springframework.validation.DataBinder#registerCustomEditor`

## Constructor Summary

Constructors
Constructor
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

Modifier and Type
Method
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 Details

### 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` - the 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, @Nullable 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` - the Number subclass to generate
  `numberFormat` - the 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 Details

### 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(@Nullable 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`