Browse Source

修复无法对比boolean

zhou-hao 5 years ago
parent
commit
1c8ec490df

+ 7 - 2
hsweb-core/src/main/java/org/hswebframework/web/bean/CompareUtils.java

@@ -152,6 +152,11 @@ public abstract class CompareUtils {
         return compare(Arrays.asList(number), target);
     }
 
+    public static boolean compare(Boolean bool, Object target) {
+        return bool.equals(target) || String.valueOf(bool).equals(target);
+    }
+
+
     public static boolean compare(Number number, Object target) {
         if (number == target) {
             return true;
@@ -178,9 +183,9 @@ public abstract class CompareUtils {
                 DateFormatter dateFormatter = DateFormatter.getFormatter(stringValue);
                 return (dateFormatter.toString(new Date(number.longValue())).equals(stringValue));
             }
-            try{
+            try {
                 return new BigDecimal(stringValue).doubleValue() == number.doubleValue();
-            }catch (NumberFormatException e){
+            } catch (NumberFormatException e) {
                 return false;
             }
         }

+ 4 - 0
hsweb-core/src/test/java/org/hswebframework/web/bean/DiffTest.java

@@ -15,11 +15,15 @@ public class DiffTest {
         Map<String, Object> before = new HashMap<>();
         before.put("name", "name");
         before.put("age",21);
+        before.put("bool", true);
+        before.put("bool", false);
         before.put("birthday", DateFormatter.fromString("19910101"));
 
         Map<String, Object> after = new HashMap<>();
         after.put("name", "name");
         after.put("age", "21");
+        after.put("bool", "true");
+        after.put("bool", "false");
         after.put("birthday", "1991-01-01");