Browse Source

支持JsonRequest

James 3 years ago
parent
commit
d6f1734898
1 changed files with 15 additions and 7 deletions
  1. 15 7
      src/main/java/com/jfinal/core/paragetter/BeanGetter.java

+ 15 - 7
src/main/java/com/jfinal/core/paragetter/BeanGetter.java

@@ -15,7 +15,6 @@
  */
  */
 package com.jfinal.core.paragetter;
 package com.jfinal.core.paragetter;
 
 
-import javax.servlet.http.HttpServletRequest;
 import com.jfinal.core.Action;
 import com.jfinal.core.Action;
 import com.jfinal.core.Controller;
 import com.jfinal.core.Controller;
 
 
@@ -34,17 +33,26 @@ public class BeanGetter<T> extends ParaGetter<T> {
 		
 		
 		// 支持 json 数据请求注入 action 形参
 		// 支持 json 数据请求注入 action 形参
 		if (ParaProcessor.resolveJson && c.isJsonRequest()) {
 		if (ParaProcessor.resolveJson && c.isJsonRequest()) {
-			HttpServletRequest req = c.getRequest();
-			if (req.getParameterMap().containsKey(paraName)) {
+			return resolveJson(action, c, (JsonRequest)c.getRequest(), paraName);
+		} else {
+			return c.getBean(beanClass, paraName, true);
+		}
+	}
+	
+	private T resolveJson(Action action, Controller c, JsonRequest req, String paraName) {
+		if (req.isJSONObject()) {
+			com.alibaba.fastjson.JSONObject jsonObj = req.getJSONObject();
+			if (jsonObj.containsKey(paraName)) {
 				// 存在与 action 形参名相同的 request 参数则使用其 value 值进行转换
 				// 存在与 action 形参名相同的 request 参数则使用其 value 值进行转换
-				return com.alibaba.fastjson.JSON.parseObject(req.getParameter(paraName), beanClass);
+				// return jsonObj.getObject(paraName, beanClass);
+				return jsonObj.getObject(paraName, beanClass);
 			} else {
 			} else {
 				// 否则使用整个请求中的 json 进行转换
 				// 否则使用整个请求中的 json 进行转换
-				return com.alibaba.fastjson.JSON.parseObject(c.getRawData(), beanClass);
+				return jsonObj.toJavaObject(beanClass);
 			}
 			}
-		} else {
-			return c.getBean(beanClass, paraName, true);
 		}
 		}
+		
+		return null;
 	}
 	}
 	
 	
 	@Override
 	@Override