Browse Source

!75 TypeConverter 新增 getConverterMap() 以及 自定义转换方法的支持
Merge pull request !75 from 开源海哥/N/A

JFinal 4 years ago
parent
commit
492137e91e
1 changed files with 18 additions and 0 deletions
  1. 18 0
      src/main/java/com/jfinal/core/converter/TypeConverter.java

+ 18 - 0
src/main/java/com/jfinal/core/converter/TypeConverter.java

@@ -36,6 +36,7 @@ import com.jfinal.core.converter.Converters.TimeConverter;
 import com.jfinal.core.converter.Converters.TimestampConverter;
 import com.jfinal.core.converter.Converters.LocalDateTimeConverter;
 import com.jfinal.core.converter.Converters.LocalDateConverter;
+import com.jfinal.kit.Func;
 
 /**
  * TypeConverter 用于将客户端请求的 String 类型数据转换成指定的数据类型
@@ -65,6 +66,7 @@ import com.jfinal.core.converter.Converters.LocalDateConverter;
 public class TypeConverter {
 	
 	private final Map<Class<?>, IConverter<?>> converterMap = new HashMap<Class<?>, IConverter<?>>(64);
+	private Func.F21<Class<?>, String, Object> convertFunc;
 	private static TypeConverter me = new TypeConverter();
 	
 	private TypeConverter() {
@@ -102,6 +104,18 @@ public class TypeConverter {
 	public <T> void regist(Class<T> type, IConverter<T> converter) {
 		converterMap.put(type, converter);
 	}
+
+	public Map<Class<?>, IConverter<?>> getConverterMap() {
+        return converterMap;
+    }
+
+    public Func.F21<Class<?>, String, Object> getConvertFunc() {
+        return convertFunc;
+    }
+
+    public void setConvertFunc(Func.F21<Class<?>, String, Object> convertFunc) {
+        this.convertFunc = convertFunc;
+    }
 	
 	/**
 	 * 将 String 数据转换为指定的类型
@@ -110,6 +124,10 @@ public class TypeConverter {
 	 * @return 转换成功的数据
 	 */
 	public final Object convert(Class<?> type, String s) throws ParseException {
+		if (convertFunc != null){
+            return convertFunc.call(type,s);
+        }
+		
 		if (s == null) {
 			return null;
 		}