浏览代码

getKv()在添加json请求数据后继续添加HttpServletRequset中的数据

James 3 年之前
父节点
当前提交
3cfcd8adec
共有 1 个文件被更改,包括 7 次插入5 次删除
  1. 7 5
      src/main/java/com/jfinal/core/Controller.java

+ 7 - 5
src/main/java/com/jfinal/core/Controller.java

@@ -825,17 +825,19 @@ public abstract class Controller {
 	 */
 	public Kv getKv() {
 		Kv kv = new Kv();
+		HttpServletRequest req = this.request;
 		
 		// 优化 json 请求,避免 JsonRequest.createParaMap() 中的数据转换
 		if (request instanceof com.jfinal.core.paragetter.JsonRequest) {
-			com.jfinal.core.paragetter.JsonRequest req = (com.jfinal.core.paragetter.JsonRequest)request;
-			if (req.getJSONObject() != null) {
-				kv.putAll(req.getJSONObject());
-				return kv;
+			com.jfinal.core.paragetter.JsonRequest jsonReq = (com.jfinal.core.paragetter.JsonRequest)request;
+			if (jsonReq.getJSONObject() != null) {
+				kv.putAll(jsonReq.getJSONObject());
 			}
+			// json 数据添加完成后再添加内部 HttpServletRequest 对象中的数据
+			req = jsonReq.getInnerRequest();
 		}
 		
-		Map<String, String[]> paraMap = request.getParameterMap();
+		Map<String, String[]> paraMap = req.getParameterMap();
 		for (Entry<String, String[]> entry : paraMap.entrySet()) {
 			String[] values = entry.getValue();
 			String value = (values != null && values.length > 0) ? values[0] : null;