From 44b596b35442829c5d46802e2da629075e18bd1f Mon Sep 17 00:00:00 2001 From: zhouhao Date: Thu, 14 May 2026 13:42:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(bean):=20=E4=BF=AE=E5=A4=8DFastBeanCopi?= =?UTF-8?q?er=E5=AF=B9CharSequence=E5=B1=9E=E6=80=A7=E7=9A=84=E5=A4=8D?= =?UTF-8?q?=E5=88=B6=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/bean/FastBeanCopier.java | 2 +- .../web/bean/FastBeanCopierTest.java | 30 ++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/hsweb-core/src/main/java/org/hswebframework/web/bean/FastBeanCopier.java b/hsweb-core/src/main/java/org/hswebframework/web/bean/FastBeanCopier.java index 1bb50177b..fdb5fec9f 100644 --- a/hsweb-core/src/main/java/org/hswebframework/web/bean/FastBeanCopier.java +++ b/hsweb-core/src/main/java/org/hswebframework/web/bean/FastBeanCopier.java @@ -587,7 +587,7 @@ public T convert(Object source, Class targetClass, Class[] genericType) { return convert(val, targetClass, genericType); } } - if (targetClass == String.class) { + if (targetClass == String.class || targetClass == CharSequence.class) { if (source instanceof Date) { // TODO: 18-4-16 自定义格式 return (T) DateFormatter.toString(((Date) source), "yyyy-MM-dd HH:mm:ss"); diff --git a/hsweb-core/src/test/java/org/hswebframework/web/bean/FastBeanCopierTest.java b/hsweb-core/src/test/java/org/hswebframework/web/bean/FastBeanCopierTest.java index 111c3a17c..1efabad8e 100644 --- a/hsweb-core/src/test/java/org/hswebframework/web/bean/FastBeanCopierTest.java +++ b/hsweb-core/src/test/java/org/hswebframework/web/bean/FastBeanCopierTest.java @@ -161,6 +161,18 @@ public void testMapList() { } + @Test + public void testCharSequence() { + CharSequenceTarget beanTarget = FastBeanCopier.copy(new CharSequenceSource("test"), new CharSequenceTarget()); + Assert.assertEquals("test", String.valueOf(beanTarget.getValue())); + + Map source = new HashMap<>(); + source.put("value", 123); + + CharSequenceTarget mapTarget = FastBeanCopier.copy(source, new CharSequenceTarget()); + Assert.assertEquals("123", String.valueOf(mapTarget.getValue())); + } + @Getter @Setter public static class Config { @@ -178,6 +190,22 @@ public String toString() { } } + @Getter + @Setter + public static class CharSequenceSource { + private String value; + + public CharSequenceSource(String value) { + this.value = value; + } + } + + @Getter + @Setter + public static class CharSequenceTarget { + private CharSequence value; + } + @Test public void testCopyMap() { @@ -337,4 +365,4 @@ public static class ExtendableSuper extends DefaultExtendable { public static class ExtendableExtends extends ExtendableSuper { private String name; } -} \ No newline at end of file +} From a51590acd9e5a9adca716f4b3d82efed94b847b9 Mon Sep 17 00:00:00 2001 From: zhouhao Date: Thu, 14 May 2026 14:00:10 +0800 Subject: [PATCH 2/2] =?UTF-8?q?test(bean):=20=E8=A1=A5=E5=85=85CharSequenc?= =?UTF-8?q?e=E5=A4=8D=E5=88=B6=E5=9B=9E=E5=BD=92=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/hswebframework/web/bean/FastBeanCopierTest.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/hsweb-core/src/test/java/org/hswebframework/web/bean/FastBeanCopierTest.java b/hsweb-core/src/test/java/org/hswebframework/web/bean/FastBeanCopierTest.java index 1efabad8e..c69bce1ed 100644 --- a/hsweb-core/src/test/java/org/hswebframework/web/bean/FastBeanCopierTest.java +++ b/hsweb-core/src/test/java/org/hswebframework/web/bean/FastBeanCopierTest.java @@ -163,8 +163,9 @@ public void testMapList() { @Test public void testCharSequence() { - CharSequenceTarget beanTarget = FastBeanCopier.copy(new CharSequenceSource("test"), new CharSequenceTarget()); - Assert.assertEquals("test", String.valueOf(beanTarget.getValue())); + StringBuilder builder = new StringBuilder("test"); + CharSequenceTarget beanTarget = FastBeanCopier.copy(new CharSequenceSource(builder), new CharSequenceTarget()); + Assert.assertSame(builder, beanTarget.getValue()); Map source = new HashMap<>(); source.put("value", 123); @@ -193,9 +194,9 @@ public String toString() { @Getter @Setter public static class CharSequenceSource { - private String value; + private CharSequence value; - public CharSequenceSource(String value) { + public CharSequenceSource(CharSequence value) { this.value = value; } }