|
|
@@ -15,7 +15,7 @@
|
|
|
*/
|
|
|
package com.jfinal.core.paragetter;
|
|
|
|
|
|
-import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.util.HashMap;
|
|
|
import com.jfinal.core.Action;
|
|
|
import com.jfinal.core.Controller;
|
|
|
import com.jfinal.kit.ReflectKit;
|
|
|
@@ -34,31 +34,39 @@ public class ModelGetter<T> extends ParaGetter<T> {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- @SuppressWarnings({ "rawtypes", "unchecked" })
|
|
|
public T get(Action action, Controller c) {
|
|
|
String paraName = this.getParameterName();
|
|
|
|
|
|
// 支持 json 数据请求注入 action 形参
|
|
|
if (ParaProcessor.resolveJson && c.isJsonRequest()) {
|
|
|
- com.alibaba.fastjson.JSONObject attrs;
|
|
|
- HttpServletRequest req = c.getRequest();
|
|
|
- if (req.getParameterMap().containsKey(paraName)) {
|
|
|
- // 存在与 action 形参名相同的 request 参数则使用其 value 值进行转换
|
|
|
- // attrs = JSON.parseObject(req.getParameter(paraName), HashMap.class);
|
|
|
- attrs = com.alibaba.fastjson.JSON.parseObject(req.getParameter(paraName));
|
|
|
- } else {
|
|
|
- // 否则使用整个请求中的 json 进行转换
|
|
|
- // attrs = JSON.parseObject(c.getRawData(), HashMap.class);
|
|
|
- attrs = com.alibaba.fastjson.JSON.parseObject(c.getRawData());
|
|
|
- }
|
|
|
-
|
|
|
- Model ret = (Model) ReflectKit.newInstance(modelClass);
|
|
|
- return (T)ret._setOrPut(attrs);
|
|
|
+ return resolveJson((JsonRequest)c.getRequest(), paraName);
|
|
|
} else {
|
|
|
return c.getModel(modelClass, paraName, true);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @SuppressWarnings({ "unchecked", "rawtypes" })
|
|
|
+ private T resolveJson(JsonRequest req, String paraName) {
|
|
|
+ com.alibaba.fastjson.JSONObject jsonObj = req.getJSONObject();
|
|
|
+ if (jsonObj == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ HashMap<String, Object> attrs;
|
|
|
+ if (jsonObj.containsKey(paraName)) {
|
|
|
+ // 存在与 action 形参名相同的 request 参数则使用其 value 值进行转换
|
|
|
+ // attrs = JSON.parseObject(req.getParameter(paraName), HashMap.class);
|
|
|
+ attrs = jsonObj.getObject(paraName, HashMap.class);
|
|
|
+ } else {
|
|
|
+ // 否则使用整个请求中的 json 进行转换
|
|
|
+ // attrs = JSON.parseObject(c.getRawData(), HashMap.class);
|
|
|
+ attrs = jsonObj.toJavaObject(HashMap.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ Model ret = (Model) ReflectKit.newInstance(modelClass);
|
|
|
+ return (T)ret._setOrPut(attrs);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
protected T to(String v) {
|
|
|
return null;
|