From 03e4ef16b3515cf8e17e0991e732e0ec6649288e Mon Sep 17 00:00:00 2001 From: lip Date: Mon, 15 Aug 2022 17:53:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9E=9A=E4=B8=BE=E4=B8=8B=E6=8B=89=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit c72e6198dbb4fbe09b270c7e12e399773d1ee12a) --- .../system/bpm/web/sys/dev/EnumComboService.java | 30 +++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/dev/EnumComboService.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/dev/EnumComboService.java index 0bc728f..81b0ead 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/dev/EnumComboService.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/dev/EnumComboService.java @@ -11,6 +11,7 @@ import cc.smtweb.framework.core.session.UserSession; import cc.smtweb.framework.core.util.PubUtil; import cc.smtweb.system.bpm.web.engine.dynPage.DynPageService; import cc.smtweb.system.bpm.web.engine.dynPage.DynRetBean; +import org.springframework.util.Assert; import java.util.ArrayList; import java.util.List; @@ -39,11 +40,34 @@ public class EnumComboService extends DynPageService { if (PubUtil.isEmpty(cls)) return SwListData.create(new ArrayList(), 0); List list = new ArrayList<>(); try { - AbstractEnum e; + Class tempClass ; + Class wantClass = null; try { - e = (AbstractEnum) Class.forName(cls).getDeclaredField("inst").get(null); + tempClass = Class.forName(cls); + wantClass = tempClass; + }catch (Exception e){ + e.printStackTrace(); + // + int lIndex = cls.lastIndexOf("."); + if (lIndex > 0) { + String outClass = cls.substring(0, lIndex); + String innerClass = outClass + "$" + cls.substring(lIndex+1); + tempClass = Class.forName(outClass); + Class[] declaredClasses = tempClass.getDeclaredClasses(); + for (Class declaredClass : declaredClasses) { + if (declaredClass.getName().equals(innerClass)) { + wantClass = declaredClass; + break; + } + } + } + } + Assert.notNull(wantClass,"classNotFound"); + AbstractEnum e ; + try { + e = (AbstractEnum) wantClass.getDeclaredField("inst").get(null); } catch (Exception e1) { - e = (AbstractEnum) Class.forName(cls).getDeclaredField("instance").get(null); + e = (AbstractEnum) wantClass.getDeclaredField("instance").get(null); } for (Object v : e.mapAll.values()) { AbstractEnum.EnumBean bean = (AbstractEnum.EnumBean) v;