Converts input to output and vice versa. Converters are needed in web applications because we have to switch between Java objects on the server and Strings in the browser output and input.
Output conversion, which is handled by {@link #convertToString(Object,Locale)}, is typically used by components when they render, so that a date can be displayed as '12/12/2007'. Input conversion, handled by {@link #convertToObject(String,Locale)}, is typically used by form components to interpret incoming values Such values are strings as they are send as request parameters from browsers. An incoming value could be the string '12/12/2007' which could be translated to a corresponding {@link Date} object.Notice that incoming value, when used by a FormComponent, will never be null because before validation form components perform the required (see {@link FormComponent#isRequired()} checkwhich errors out on null values. In the case the FormComponent is not required and the user enters a null value converters will not be invoked because no type conversion is necessary.
@author Eelco Hillenius
@author Jonathan Locke
@param < C> The object to convert from and to String
@see org.apache.wicket.Component#getConverter(Class)
@see org.apache.wicket.Application#getConverterLocator()