|
@@ -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
|