From 029fa9e8aa44fb4bcb3adb47e6195f84cc0435cd Mon Sep 17 00:00:00 2001 From: jensp Date: Wed, 1 Aug 2018 18:21:24 +0000 Subject: [PATCH] CCM NG: Several bugfixes for the PageModelEditor git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5625 8810af33-2d31-482b-a856-94f89814c4df Former-commit-id: 389e5d1ae94c126ba211a9bc86ad2bf52c22c3e8 --- .../ccm-cms/ccm-cms-pagemodelseditor.tsx | 15 ++++++---- .../org/libreccm/pagemodel/rs/Components.java | 30 +++++++++++++++++-- .../ccm-pagemodelseditor/PageModelsEditor.tsx | 10 +++---- 3 files changed, 41 insertions(+), 14 deletions(-) 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) => , )} @@ -583,6 +584,7 @@ class ContainerListComponent deleteContainer={this.deleteContainer} dispatcherPrefix={this.props.dispatcherPrefix} errorMsg="" + key={container.containerUuid} pageModelName={this.props.pageModelName} />) //
  • // {container.key} @@ -797,11 +799,6 @@ class ContainerModelComponent this.fetchComponents(); } - public componentDidUpdate() { - - this.fetchComponents(); - } - public render(): React.ReactNode { return
  • @@ -823,6 +820,7 @@ class ContainerModelComponent component={component} containerKey={this.props.container.key} dispatcherPrefix={this.props.dispatcherPrefix} + key={component.componentModelId} pageModelName={this.props.pageModelName} /> // this.getComponentModelEditor(component), )} @@ -1028,6 +1026,8 @@ class BasicComponentModelEditorDialog public handleSubmit(event: React.FormEvent): void { + event.preventDefault(); + const componentProperties: {[name: string]: any} = this.props.getComponentModelProperties();