2020-08-23 15:44
先创建如下函数,可以将表单数据转成 json 字符串
function formToJsonString(formId) {
var paramArray = $('#' + formId).serializeArray();
// 表单参数转 json 对象
var jsonObj = {};
$(paramArray).each(function() {
jsonObj[this.name] = this.value;
});
// json 对象转 json 字符串
return JSON.stringify(jsonObj);
}
然后用如下函数发送 json 字符串到后端:
$.ajax({
type: "post",
url: "http://localhost/action",
contentType: 'application/json; charset=UTF-8', // 关键参数
dataType: 'json',
data: formToJsonString("表单id"),
success: function(ret) {
}
});
注意,关键参数是 contentType: 'application/json; charset=UTF-8'
将所有数据以 string 格式发送到后端以后,再用如下代码转成 json :
String jsonStr = getRawData();
Map map = FastJson.getJson().parse(jsonStr, Map.class);
转成 map 以后,再转成各种 jave bean 就方便多了,并且 fastjson 也有比较智能的方法转为更符合你要求的类型,这个你看一下 fastjson 的 parse 方法
2020-08-23 15:39
核心在于看一下 eclipse/IDEA 控制台输出的 jfinal action report 中的 parameter 这一栏,根据这一栏中的格式,选择合适的 getBean、getModel、getPara 方法
假定输出是这样的:
columns[0][data]:
columns[0][name]:
columns[0][searchable]: true
columns[0][orderable]: true
那么代码是:
getBean(DataSrc.class, "columns[0]", true);
注意,如果你的 DataSrc 有相应的 setter 方法就用 getBean,否则用 getModel
回到你的具体需求,你的 columns[X] 中的 X 值是变化的,所以,你只需要用一个 for 循环即可:
for (int X=0; X《 len; X++) {
DataSrc ds = getBean(DataSrc.class, "columns[" + X + "]", true);
list.add(ds);
}
最后,你的 DataSrc 下面还有 List《Column》 columns, 这种多级 model 结构,这种场景,使用 json 传数据是最好的,具体传递方式见下一条回复
2020-08-22 21:39
@李通 jfinal 版本号在 com.jfinal.core.Const.JFINAL_VERSION 中就有,可以直接获取
2020-08-22 14:40
解决思路:
1:在 chrome 中按 F12,打开浏览器的开发者工具,进入 netwrok 这一栏,输入 url,查看访问的 url 错误是什么,你说的是 404,那么 url 是否被重定向过了
2:查看 eclipse / IDEA 控制台输出的 jfinal action report, 看请求是否到达了 jfinal 这一层面
3:出现的 404 页面是 jfinal 给定的,还是你自己给定的,还是 undertow 给定的(undertow 给定的会出现 undertow 有关字样)
4:看看自己 PC 的 ip 地址,用另一台电脑的 chrome 访问一下你的应用试试:
http://ip:6666/mytool