From 26df81657a64076b41e2ba5bda97118296726f95 Mon Sep 17 00:00:00 2001 From: zhourui Date: Thu, 22 Oct 2020 19:23:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0ScriptObject=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/project/script/ScriptFactory.java | 4 +++- .../core/project/tools/PropertyTools.java | 24 ++++++++++++------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/script/ScriptFactory.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/script/ScriptFactory.java index 4d07ffb324..ca66cccba8 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/script/ScriptFactory.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/script/ScriptFactory.java @@ -264,8 +264,10 @@ public class ScriptFactory { } } } else { - list.add(PropertyTools.getOrElse(som, JpaObject.DISTINGUISHEDNAME, String.class, "")); + list.add(PropertyTools.getOrElse(o, JpaObject.DISTINGUISHEDNAME, String.class, "")); } + } else { + list.add(Objects.toString(o, "")); } } return list; diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/PropertyTools.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/PropertyTools.java index 1c3c363ad8..b1acab5579 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/PropertyTools.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/PropertyTools.java @@ -9,21 +9,27 @@ public class PropertyTools { @SuppressWarnings("unchecked") public static T getOrElse(Object bean, String name, Class cls, T defaultObject) throws Exception { if (null != bean) { - if (PropertyUtils.isReadable(bean, name)) { + try { + // 如果使用PropertyUtils.isReadable那么Nested就会失效,无法获取map类型中的值. + // Object o = PropertyUtils.getNestedProperty(bean, name); Object o = PropertyUtils.getProperty(bean, name); if (null != o) { return (T) o; } - } else { - Field field = FieldUtils.getField(bean.getClass(), name, true); - if (null != field) { - Object o = FieldUtils.readField(field, bean, true); - if (null != o) { - return (T) o; - } + } catch (NoSuchMethodException e) { + // java.lang.NoSuchMethodException: Unknown property 'abc' on class 'class + // java.lang.Object' + // nothing pass + } + Field field = FieldUtils.getField(bean.getClass(), name, true); + if (null != field) { + Object o = FieldUtils.readField(field, bean, true); + if (null != o) { + return (T) o; } } } return defaultObject; } -} + +} \ No newline at end of file -- GitLab