diff --git a/ccm-cms-js/src/main/typescript/ccm-cms/ccm-cms-pagemodelseditor.tsx b/ccm-cms-js/src/main/typescript/ccm-cms/ccm-cms-pagemodelseditor.tsx
index 9c57a9918..ec3725a43 100644
--- a/ccm-cms-js/src/main/typescript/ccm-cms/ccm-cms-pagemodelseditor.tsx
+++ b/ccm-cms-js/src/main/typescript/ccm-cms/ccm-cms-pagemodelseditor.tsx
@@ -171,6 +171,9 @@ class ItemListComponentEditorDialog extends React.Component<
};
this.handleChange = this.handleChange.bind(this);
+
+ this.getComponentModelProperties
+ = this.getComponentModelProperties.bind(this);
}
public render(): React.ReactNode {
@@ -215,12 +218,12 @@ class ItemListComponentEditorDialog extends React.Component<
;
diff --git a/ccm-core/src/main/java/org/libreccm/pagemodel/rs/Components.java b/ccm-core/src/main/java/org/libreccm/pagemodel/rs/Components.java
index df91497bc..dda397eff 100644
--- a/ccm-core/src/main/java/org/libreccm/pagemodel/rs/Components.java
+++ b/ccm-core/src/main/java/org/libreccm/pagemodel/rs/Components.java
@@ -326,7 +326,7 @@ public class Components {
| InvocationTargetException ex) {
throw new WebApplicationException(ex);
}
-
+
final String valueStr;
if (value == null) {
valueStr = "";
@@ -469,11 +469,35 @@ public class Components {
if (data.containsKey(propertyDesc.getName())) {
final Method writeMethod = propertyDesc.getWriteMethod();
+ final Class> propertyType = propertyDesc.getPropertyType();
if (writeMethod != null) {
try {
- writeMethod.invoke(componentModel,
- data.getString(propertyDesc.getName()));
+
+ final String value = data.getString(propertyDesc.getName());
+
+ if (propertyType == Boolean.TYPE) {
+ writeMethod.invoke(componentModel,
+ Boolean.parseBoolean(value));
+ } else if (propertyType == Double.TYPE) {
+ writeMethod.invoke(componentModel,
+ Double.parseDouble(value));
+ } else if (propertyType == Float.TYPE) {
+ writeMethod.invoke(componentModel,
+ Float.parseFloat(value));
+ } else if (propertyType == Integer.TYPE) {
+ writeMethod.invoke(componentModel,
+ Integer.parseInt(value));
+ } else if (propertyType == Long.TYPE) {
+ writeMethod.invoke(componentModel,
+ Long.parseLong(value));
+ } else if (propertyType == String.class) {
+ writeMethod.invoke(componentModel, value);
+ } else {
+ throw new IllegalArgumentException(
+ "Unsupported property type.");
+ }
+
} catch (IllegalAccessException
| InvocationTargetException ex) {
throw new WebApplicationException(ex);
diff --git a/ccm-pagemodelseditor/src/main/typescript/ccm-pagemodelseditor/PageModelsEditor.tsx b/ccm-pagemodelseditor/src/main/typescript/ccm-pagemodelseditor/PageModelsEditor.tsx
index 550ad075f..5b7f70bdc 100644
--- a/ccm-pagemodelseditor/src/main/typescript/ccm-pagemodelseditor/PageModelsEditor.tsx
+++ b/ccm-pagemodelseditor/src/main/typescript/ccm-pagemodelseditor/PageModelsEditor.tsx
@@ -149,6 +149,7 @@ class PageModelsList
.map((pageModel: PageModel, index: number) =>