summaryrefslogtreecommitdiffstats
path: root/server/src/com/vaadin/ui/AbstractField.java
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/com/vaadin/ui/AbstractField.java')
-rw-r--r--server/src/com/vaadin/ui/AbstractField.java28
1 files changed, 20 insertions, 8 deletions
diff --git a/server/src/com/vaadin/ui/AbstractField.java b/server/src/com/vaadin/ui/AbstractField.java
index 7ac3a57c46..6a52d6b849 100644
--- a/server/src/com/vaadin/ui/AbstractField.java
+++ b/server/src/com/vaadin/ui/AbstractField.java
@@ -740,13 +740,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
*/
private Object convertToModel(T fieldValue, Locale locale)
throws Converter.ConversionException {
- Class<?> modelType = null;
- Property pd = getPropertyDataSource();
- if (pd != null) {
- modelType = pd.getType();
- } else if (getConverter() != null) {
- modelType = getConverter().getModelType();
- }
+ Class<?> modelType = getModelType();
try {
return ConverterUtil.convertToModel(fieldValue,
(Class<Object>) modelType, getConverter(), locale);
@@ -756,6 +750,24 @@ public abstract class AbstractField<T> extends AbstractComponent implements
}
/**
+ * Retrieves the type of the currently used data model. If the field has no
+ * data source then the model type of the converter is used.
+ *
+ * @since 7.1
+ * @return The type of the currently used data model or null if no data
+ * source or converter is set.
+ */
+ protected Class<?> getModelType() {
+ Property<?> pd = getPropertyDataSource();
+ if (pd != null) {
+ return pd.getType();
+ } else if (getConverter() != null) {
+ return getConverter().getModelType();
+ }
+ return null;
+ }
+
+ /**
* Returns the conversion error with {0} replaced by the data source type
* and {1} replaced by the exception (localized) message.
*
@@ -935,7 +947,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
if (getConverter() != null) {
try {
valueToValidate = getConverter().convertToModel(fieldValue,
- getLocale());
+ getModelType(), getLocale());
} catch (ConversionException e) {
throw new InvalidValueException(getConversionError(
getConverter().getModelType(), e));