org.springframework.beans.propertyeditors

Class CustomNumberEditor

  • java.lang.Object
    • java.beans.PropertyEditorSupport
      • org.springframework.beans.propertyeditors.CustomNumberEditor
  • All Implemented Interfaces:
    java.beans.PropertyEditor


    public class CustomNumberEditor
    extends java.beans.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, DataBinder.registerCustomEditor(java.lang.Class<?>, java.beans.PropertyEditor)
    • Constructor Summary

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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method and Description
      java.lang.String getAsText()
      Format the Number as String, using the specified NumberFormat.
      void setAsText(java.lang.String text)
      Parse the Number from the given text, using the specified NumberFormat.
      void setValue(java.lang.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(java.lang.Class<? extends java.lang.Number> numberClass,
                                  boolean allowEmpty)
                           throws java.lang.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:
        java.lang.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(java.lang.Class<? extends java.lang.Number> numberClass,
                                  @Nullable
                                  java.text.NumberFormat numberFormat,
                                  boolean allowEmpty)
                           throws java.lang.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:
        java.lang.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(java.lang.String text)
                       throws java.lang.IllegalArgumentException
        Parse the Number from the given text, using the specified NumberFormat.
        Specified by:
        setAsText in interface java.beans.PropertyEditor
        Overrides:
        setAsText in class java.beans.PropertyEditorSupport
        Throws:
        java.lang.IllegalArgumentException
      • setValue

        public void setValue(@Nullable
                             java.lang.Object value)
        Coerce a Number value into the required target class, if necessary.
        Specified by:
        setValue in interface java.beans.PropertyEditor
        Overrides:
        setValue in class java.beans.PropertyEditorSupport
      • getAsText

        public java.lang.String getAsText()
        Format the Number as String, using the specified NumberFormat.
        Specified by:
        getAsText in interface java.beans.PropertyEditor
        Overrides:
        getAsText in class java.beans.PropertyEditorSupport