分享一个用Kv替代JavaBean接收前端简单参数的方法

image.png

具体有什么妙用呢?简单举个例子,自由发挥想象..

image.png


评论区

JFinal

2018-07-22 17:30

简洁好用,感谢你的分享

此外,jfinal 3.5 已经在 controller 中添加了如下方法:
String getRawData()
Kv getRawDataToKv()
T getRawDataTo(Class targetClass)

用起来会更极速

没有上述功能的 jfinal 版本可以引入一个 BaseController 先用上

飞.飞

2018-07-22 18:31

@JFinal 期待3.5版发布~

netwild

2018-07-23 08:14

@JFinal 3.5吗等不及了!gitee没找到3.5,去哪能尝尝鲜?

JFinal

2018-07-23 17:15

@飞.飞 @netwild 现在你可以在你自己的 BaseController 添加一点点代码来实现:
private String rawData;

/**
* 获取 http 请求 body 中的原始数据,通常用于接收 json String 这类数据

* 可多次调用此方法,避免掉了 HttpKit.readData(...) 方式获取该数据时多次调用
* 引发的异常
* @return http 请求 body 中的原始数据
*/
public String getRawData() {
if (rawData == null) {
rawData = com.jfinal.kit.HttpKit.readData(request);
}
return rawData;
}

public T getRawDataTo(Class targetClass) {
Json json = Json.getJson();
if (json instanceof com.jfinal.json.JFinalJson) {
return (T)FastJson.getJson().parse(getRawData(), targetClass);
} else {
return (T)json.parse(getRawData(), targetClass);
}
}

public Kv getRawDataToKv() {
return getRawDataTo(Kv.class);
}

jiren

2018-07-23 19:51

期待,这对 前后端分离项目十分友好

netwild

2018-07-23 21:34

@JFinal 帅呆啦!

Didier

2018-07-30 17:38

学习了

ddjfinal

2018-09-06 17:54

@JFinal Map parameterMap = getRequest().getParameterMap();
;然后再处理下,数组String[] 长度大于1的保持不变,等于于1的直接转为String,再,作为查询条件,在sql模板文件直接使用。数组大于1的,一般都是拼接成 in 语句用的。

ddjfinal

2018-09-06 18:02

@ddjfinal 定义获取参数map的通用方法在基类controller里面用的时候直接取,非常方便。 一开头写错了,是这个样子, Map parameterMap = getRequest().getParameterMap();

protected Map paramMap() {
Map parameterMap = request.getParameterMap();
Map resultMap = new HashMap();
for (Map.Entry entry : parameterMap.entrySet()) {
if (entry.getValue() != null && entry.getValue().length > 0 && StrUtil.isNotBlank(entry.getValue()[0])) {
String values = "";
for (String s : entry.getValue()) {
values = values + "," + s;
}
resultMap.put(entry.getKey(), values.substring(1));
}

}
return resultMap;
}
这里是把数字转为,号分割了

热门分享

扫码入社