controller.getKv()方法对复选框取值不友好

/**
 * 获取被 Kv 封装后的参数,便于使用 Kv 中的一些工具方法
 * 
 * 由于 Kv 继承自 HashMap,也便于需要使用 HashMap 的场景,
 * 例如:
 * Record record = new Record().setColumns(getKv());
 */
public Kv getKv() {
	Kv kv = new Kv();
	Map<String, String[]> paraMap = request.getParameterMap();
	for (Entry<String, String[]> entry : paraMap.entrySet()) {
		String[] values = entry.getValue();
		String value = (values != null && values.length > 0) ? values[0] : null;
		kv.put(entry.getKey(), "".equals(value) ? null : value);
	}
	return kv;
}

上面原方法数组的值会只取一个,能否改为支持数组比如复选框传值,比如下面这样?

Kv kv = new Kv();
getParaMap().forEach((k, v) -> {
	if(v.length == 1)
		kv.put(k, getPara(k.toString()));
	else
		kv.put(k, getParaValues(k.toString()));
});


评论区

JFinal

2019-06-28 21:44

这个问题值得关注,今天我甚至打算要支持这个功能了,但有点担心会影响现有的项目

再多等几个反馈,看看这个需求是否强烈

当前你可以引入一个 BaseController extends Controller ,然后覆盖掉父类中的 getKv() 来实现一下

记得搞定后回来反馈,或许这个在将来十分有用

zhangtianxiao

2019-06-29 16:22

没啥好支持的, 建议ajax post传json字符串. 你判断length=1, 那复选框只选了一个呢

左右冷静

2019-07-07 03:50

@JFinal 嗯 我已按你说的方法先用了,这样会比较方便,更省事了

热门反馈

扫码入社