2020-09-04 16:28

看一下调用栈,看是哪里停下来了,jfinal 的 aop 是支持循环依赖的,当前无法确定你碰到的问题

2020-09-02 17:20

@Code_Cat 多数 json 转换工具是根据 getter 方法来转换的

你手头的 Record 中的 getter 方法就是那些: getColumns()、getColumnNames()、getColumnValues()

你可以调用 getColumns() 拿到 Map 来转换

也可以用一下 jfinal 中的 JFinalJson.getJson().toJson(...);

2020-09-02 14:56

你是用的 fastjson 转换的吧?

这样来用:
String jsonStr = JFinalJson.getJson().toJson(page.getList());
renderJson(jsonStr);

如果希望默认就是这个行为,不要配置:
me.setJsonFactory(...);

2020-09-01 11:19

@北流家园网 MixedJsonFactory 需要使用高版本的 jfinal 才能配置让 datePattern 生效,你用的哪个版本

2020-08-26 22:57

此外,你碰到的这个问题,不知道能不能同时解决下面这个验证码文字是乱码的问题:
https://jfinal.com/share/411

如果能同时解决就极好了

2020-08-26 22:55

这个办法极好,点赞 + 收藏

前不久 @eova 作者也提出过要添加这个支持,我正考虑要添加到 jfinal 新版本中去:
https://blog.csdn.net/wodeyuer125/article/details/50502914
原因是windows内核集成了gui,而linux上没有启动x server
解决办法:
1.启动x server
2.在java运行参数上加-Djava.awt.headless=true
用tomcat 和 Undertow 都可能遇到这个问题, 尤其是 Centos 7

就是不知道开启这个配置有没有啥副作用:
System.setProperty("java.awt.headless","true");

2020-08-24 21:11

@fmpoffice 同一台服务器用 nginx 支持更方便, undertow 走另外的端口即可

2020-08-24 16:34

druidplugin 一般不必重启,重启的应该是 arp

2020-08-23 15:44

乱码问题还真没什么捷径可解决,只能老老实实单步调试,找到发生乱码的原发现场去解决

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 16:59

补充一下,如果你希望这个加载的优先级是第一个,可以使用:
Engine.addFieldGetterToFirst(new CamelFieldGetter(null));

还可以指定优先级,例如:
Engine.addFieldGetter(3, new CamelFieldGetter(null));