From af1df4e84a7a48bdc9296f681fa33c7345eb642c Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期一, 23 三月 2026 20:06:46 +0800
Subject: [PATCH] 修复
---
src/main/java/com/zy/common/web/BaseController.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 54 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/zy/common/web/BaseController.java b/src/main/java/com/zy/common/web/BaseController.java
index b583ca8..c6166d2 100644
--- a/src/main/java/com/zy/common/web/BaseController.java
+++ b/src/main/java/com/zy/common/web/BaseController.java
@@ -161,8 +161,8 @@
if (Cools.isEmpty(condition)) {
return;
}
- String keyword = String.valueOf(condition).trim();
- if (keyword.isEmpty()) {
+ String keyword = normalizeFilterText(condition);
+ if (keyword == null || keyword.isEmpty()) {
return;
}
boolean appended = false;
@@ -208,6 +208,58 @@
}
}
+ protected String normalizeFilterText(Object rawValue) {
+ if (rawValue == null) {
+ return null;
+ }
+ String normalized = String.valueOf(rawValue).trim();
+ if (normalized.isEmpty() || "null".equalsIgnoreCase(normalized)) {
+ return null;
+ }
+ return normalized;
+ }
+
+ protected <T> Object resolveFilterValue(Class<T> cls, String columnName, Object rawValue) {
+ String normalized = normalizeFilterText(rawValue);
+ if (normalized == null) {
+ return null;
+ }
+ Class<?> fieldType = resolveFieldType(cls, columnName);
+ if (fieldType == null) {
+ return normalized;
+ }
+ Object parsedValue = parseExactSearchValue(fieldType, normalized);
+ return parsedValue != null ? parsedValue : normalized;
+ }
+
+ private <T> Class<?> resolveFieldType(Class<T> cls, String columnName) {
+ if (cls == null || Cools.isEmpty(columnName)) {
+ return null;
+ }
+ for (Field field : Cools.getAllFields(cls)) {
+ if (Modifier.isFinal(field.getModifiers())
+ || Modifier.isStatic(field.getModifiers())
+ || Modifier.isTransient(field.getModifiers())) {
+ continue;
+ }
+ String column = null;
+ if (field.isAnnotationPresent(TableField.class)) {
+ TableField tableField = field.getAnnotation(TableField.class);
+ if (!tableField.exist()) {
+ continue;
+ }
+ column = tableField.value();
+ }
+ if (Cools.isEmpty(column)) {
+ column = field.getName();
+ }
+ if (columnName.equals(column) || columnName.equals(field.getName())) {
+ return field.getType();
+ }
+ }
+ return null;
+ }
+
private boolean supportsLikeSearch(Class<?> fieldType) {
return CharSequence.class.isAssignableFrom(fieldType)
|| fieldType == Character.class
--
Gitblit v1.9.1