2020-05-25 14:04

俱乐部有个同学的 jfinal 的项目中,用到了好几个 engine 对象来实现不同领域的功能:
1:渲染 html
2:生成源代码
3:利用 email 模板,生成群发 email
4:管理 sql
5:生成 xml 与微信公众平台交互

2020-05-25 14:02

就 jfinal 本身来说,enjoy 已用在了渲染 html , 以及生成 sql。在 jfinal 中获取这两种用途的 Engine 对象的方法分别如下:
RenderManager.me().getEngine();
activeRecordPlugin.getEngine();

不同方式获取的 Engine 对象是不同的, 你的代码中通过 Engine.use() 获取的只不过是一个未被使用的默认 Engine

2020-05-25 14:00

将下面的代码:
Engine engine = Engine.use();
改成:
Engine engine = arp.getEngine();

由于 enjoy 可以用在同一个项目中的不同功能,所以不同的 Engine 对象的配置是独立的,你通过 Engine.use() 获得的 Engine 对象并没有用于 ActiveRecordPlugin

仔细看一下文档中有关配置多个 Engine 的部分:
https://jfinal.com/doc/6-2

2020-05-24 21:17

LayUI 在国内用得挺多, 这个项目有潜力,一定要好好打磨, 赞

2020-05-24 21:14

这里的关键在于,如何在前端用 js 发送 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'

否则就不是 json 数据类型的请求


最后,js 将数据转成 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 这个中间工具,一切都简单了。

上述代码在 jfinal 俱乐部福利中都有,有需的话可以加入俱乐部获取 jfinal.com 官网代码

2020-05-24 21:11

你的数据带有数组,不太好处理,需要自己写点代码

建议在前端用 js 将数据先转成 json ,然后传递 json 到后端,后端接收代码大至如下:
String jsonString = getRawData();
Map map = FastJson.getJson().parse(jsonString, Map.class);

以上就将 json 转成 Map 了, 如果你是数组,还可以转成 List ,例如:
List list = FastJson.getJson().parse(jsonString, List.class);

List、Map 再转成 Model 是很容易的,看一下 Model 中的一些 setter 方法就知道如何转了

2020-05-24 21:06

@124653847atqq.com 这个不需要处理,你无法让外网服务不被这类请求骚扰

如果一定要处理,可以配置一下日志,让这类异常不输出到日志

2020-05-23 18:18

@糊搞 不用重写,贴子有修改功能

2020-05-23 17:15

Db.template 方法中的参数与是否继承 Model 无关,因为用到的参数是: Map 或者 Object... 。这两种参数是最通用的

所以你的问题的前提就是不成立的,后面的回复也就不知道回复啥了

2020-05-23 15:41

@tctc4869 enjoy 天然支持 setter getter 的类型,看一下文档中的 enjoy 表达式那一章

2020-05-22 23:58

@永字诀 你看一下 jfinal 依赖注入源码就知道有多极简,200 多行代码,主要就一个类来实现该功能:
https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/aop/AopFactory.java

2020-05-22 23:57

@永字诀 jfinal 的依赖注入与其它框架很不一样,以前不实现这个功能的理由如下:

需要引入大量繁杂而多余的概念,例如:Aspect、Advice、Joinpoint、Poincut、Introduction、Weaving、Around等等,并且需要引入IOC容器并配合大量的XML或者annotation来进行组件装配。

而后续的 jfinal 版本,找到了避开了上述缺点的方案,例如完全无需 IOC 容器、XML 配置,这才加入了依赖注入的功能

而 spring 的实现方案站在 jfinal 的高度一点儿也 "不香"

jfinal 是一直在迭代式前进的,但既便如此,在引入新功能的时候也必定要坚持初心:极简

2020-05-22 17:51

将上述模板复制出来,放在你项目中的 src/main/resources 下面,然后通过下面两个方法配置即可:
Generator.setModelTemplate(...);
Generator.setBaseModelTemplate(...);