|
|
@@ -23,18 +23,18 @@ import com.jfinal.core.ActionHandler;
|
|
|
import com.jfinal.core.Controller;
|
|
|
|
|
|
public class BeanGetter<T> extends ParaGetter<T> {
|
|
|
-
|
|
|
+
|
|
|
private final Class<T> beanClass;
|
|
|
-
|
|
|
+
|
|
|
// 存放参数泛型,支持将 json 数组转化为带有泛型的 List,例如: List<User>、List<Integer>
|
|
|
private final Class<?> parameterizedType;
|
|
|
-
|
|
|
+
|
|
|
public BeanGetter(Class<T> beanClass, String parameterName, Parameter parameter) {
|
|
|
super(parameterName, null);
|
|
|
this.beanClass = beanClass;
|
|
|
this.parameterizedType = getParameterizedType(parameter);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
private Class<?> getParameterizedType(Parameter parameter) {
|
|
|
if (parameter != null) {
|
|
|
Type type = parameter.getParameterizedType();
|
|
|
@@ -47,7 +47,7 @@ public class BeanGetter<T> extends ParaGetter<T> {
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
@Override
|
|
|
public T get(Action action, Controller c) {
|
|
|
// 支持 json 数据请求注入 action 形参
|
|
|
@@ -57,13 +57,13 @@ public class BeanGetter<T> extends ParaGetter<T> {
|
|
|
return c.getBean(beanClass, this.getParameterName(), true);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
private T resolveJson(JsonRequest req) {
|
|
|
com.alibaba.fastjson.JSONObject jsonObj = req.getJSONObject();
|
|
|
if (jsonObj == null) {
|
|
|
return toList(req.getJSONArray());
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
String paraName = this.getParameterName();
|
|
|
if (jsonObj.containsKey(paraName)) {
|
|
|
// 存在与 action 形参名相同的 request 参数则使用其 value 值进行转换
|
|
|
@@ -73,22 +73,24 @@ public class BeanGetter<T> extends ParaGetter<T> {
|
|
|
return jsonObj.toJavaObject(beanClass);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
@SuppressWarnings("unchecked")
|
|
|
private T toList(com.alibaba.fastjson.JSONArray jsonArr) {
|
|
|
if (jsonArr == null) {
|
|
|
return null;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (parameterizedType != null) {
|
|
|
return (T) jsonArr.toJavaList(parameterizedType);
|
|
|
} else {
|
|
|
return (T) jsonArr.toJavaList(Object.class);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
@Override
|
|
|
protected T to(String v) {
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|