From f773818642017fb45e598c7da2e98e2f7d151305 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 6 Mar 2026 16:49:36 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20jackson=20create?= =?UTF-8?q?Contextual=20=E7=94=A8=E6=B3=95=E4=B8=8D=E6=A0=87=E5=87=86?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E5=8F=AF=E8=83=BD=E5=87=BA=E7=8E=B0=E7=9A=84?= =?UTF-8?q?=E5=B9=B6=E5=8F=91=E9=97=AE=E9=A2=98(https://gitee.com/dromara/?= =?UTF-8?q?RuoYi-Cloud-Plus/issues/IFAM5Z)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sensitive/handler/SensitiveHandler.java | 17 ++++++++++------- .../core/handler/TranslationHandler.java | 9 ++++++--- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/handler/SensitiveHandler.java b/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/handler/SensitiveHandler.java index d454724d7..e4a31dada 100644 --- a/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/handler/SensitiveHandler.java +++ b/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/handler/SensitiveHandler.java @@ -25,9 +25,15 @@ import java.util.Objects; @Slf4j public class SensitiveHandler extends JsonSerializer implements ContextualSerializer { - private SensitiveStrategy strategy; - private String[] roleKey; - private String[] perms; + private final SensitiveStrategy strategy; + private final String[] roleKey; + private final String[] perms; + + public SensitiveHandler(SensitiveStrategy strategy, String[] strings, String[] perms) { + this.strategy = strategy; + this.roleKey = strings; + this.perms = perms; + } @Override public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException { @@ -48,10 +54,7 @@ public class SensitiveHandler extends JsonSerializer implements Contextu public JsonSerializer createContextual(SerializerProvider prov, BeanProperty property) throws JsonMappingException { Sensitive annotation = property.getAnnotation(Sensitive.class); if (Objects.nonNull(annotation) && Objects.equals(String.class, property.getType().getRawClass())) { - this.strategy = annotation.strategy(); - this.roleKey = annotation.roleKey(); - this.perms = annotation.perms(); - return this; + return new SensitiveHandler(annotation.strategy(), annotation.roleKey(), annotation.perms()); } return prov.findValueSerializer(property.getType(), property); } diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationHandler.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationHandler.java index e8c03acdc..95a7ded9f 100644 --- a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationHandler.java +++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationHandler.java @@ -31,7 +31,11 @@ public class TranslationHandler extends JsonSerializer implements Contex */ public static final Map> TRANSLATION_MAPPER = new ConcurrentHashMap<>(); - private Translation translation; + private final Translation translation; + + public TranslationHandler(Translation translation) { + this.translation = translation; + } @Override public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException { @@ -63,8 +67,7 @@ public class TranslationHandler extends JsonSerializer implements Contex public JsonSerializer createContextual(SerializerProvider prov, BeanProperty property) throws JsonMappingException { Translation translation = property.getAnnotation(Translation.class); if (Objects.nonNull(translation)) { - this.translation = translation; - return this; + return new TranslationHandler(translation); } return prov.findValueSerializer(property.getType(), property); } From 337c2f717078cb4c0b29dd466058371fb1f32cb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 6 Mar 2026 16:54:50 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20jackson=20create?= =?UTF-8?q?Contextual=20=E7=94=A8=E6=B3=95=E4=B8=8D=E6=A0=87=E5=87=86?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E5=8F=AF=E8=83=BD=E5=87=BA=E7=8E=B0=E7=9A=84?= =?UTF-8?q?=E5=B9=B6=E5=8F=91=E9=97=AE=E9=A2=98(https://gitee.com/dromara/?= =?UTF-8?q?RuoYi-Cloud-Plus/issues/IFAM5Z)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/sensitive/handler/SensitiveHandler.java | 9 +++++++++ .../translation/core/handler/TranslationHandler.java | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/handler/SensitiveHandler.java b/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/handler/SensitiveHandler.java index e4a31dada..e5eed76c0 100644 --- a/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/handler/SensitiveHandler.java +++ b/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/handler/SensitiveHandler.java @@ -29,6 +29,15 @@ public class SensitiveHandler extends JsonSerializer implements Contextu private final String[] roleKey; private final String[] perms; + /** + * 提供给 jackson 创建上下文序列化器时使用 不然会报错 + */ + public SensitiveHandler() { + this.strategy = null; + this.roleKey = null; + this.perms = null; + } + public SensitiveHandler(SensitiveStrategy strategy, String[] strings, String[] perms) { this.strategy = strategy; this.roleKey = strings; diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationHandler.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationHandler.java index 95a7ded9f..2322cdf5d 100644 --- a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationHandler.java +++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationHandler.java @@ -33,6 +33,13 @@ public class TranslationHandler extends JsonSerializer implements Contex private final Translation translation; + /** + * 提供给 jackson 创建上下文序列化器时使用 不然会报错 + */ + public TranslationHandler() { + this.translation = null; + } + public TranslationHandler(Translation translation) { this.translation = translation; }