2017-08-28 13:22

@eilir2016 最简单的办法就是使用 Model 而不是 record,如果一定要使用 record 转 json 有两个办法:
1:使用 JFinalJson 来转:JFinalJson.getJson().toJson(...),jfinal 默认就是么转的,只需要 JsonKit.toJson(record)
2:如果使用别的 json 工具,例如用的是 fastjson 需要做点扩展,以下是具体办法:
https://my.oschina.net/talenttan/blog/1517514

jfinal 3.3 会添加 fasjon、jackson 对 record 转 json 的扩展,多多关注 jfinal 新版本

2017-08-28 12:09

用 Db.call(...) 方法即可,这里有些例子:
https://my.oschina.net/muduclark/blog/525805
https://www.oschina.net/question/1422291_247186

2017-08-28 11:50

@dear7575 不容易啊,我花的那些回答问题的时间总算没白费

2017-08-28 11:44

用 find 系列的方法,而不要用 query 系的

find 系会将返回值封装成 Record 对明,而 query 系不做任何封装,原样返回

2017-08-28 11:33

首先通过设置断点,单步调试,看代码有没有执行 conn.rollback() 这个方法,如果执行了,只需要确保以下几件事就可以了:
1:mysql 是不是在用 InnoDB 引擎,其它引擎不支持事务
2:事务级别是否足够高,如果是 2 的话,建议调为 4 看一下:arp.setTransactionLevel(4)
3:是不是不细心,上次提交过的已成定局的数据,误认为是本次事务没有回滚

2017-08-28 11:30

只要让多个 service 处在同一个事务内就可以,也可以处在潜逃的事务内,例如:
Db.tx(new IAtom() {
public void call(...) {
serviceAaa.doIt(...); // 业务 aaa
serviceAbb.doIt(...); // 业务 bbb
}
}

如果是 业务 aaa 调用业务 bbb 也可以

2017-08-27 14:23

@北流家园网 没有问题, _MappingKit 中生成的映射同时也被改变过来,符合生成的 Model

2017-08-27 14:22

@北流家园网 具体需求是什么样的? 知道了需求才知道怎么添加这个 url 指令

2017-08-27 00:21

添加一个 handler,一行代码的事:
me.add(new FakeStaticHandler(".do"));

通过上面的代码,你的动态请求全部变成了 locahost/action.do 这种形式

你还可以做成 jsp 的形式:
me.add(new FakeStaticHandler(".jsp"));

上面两个都是 jfinal 官方提供的 handler 组件支持的

2017-08-26 15:59

看到你的扩展指令中需要使用 SqlKit.SQL_PARA_KEY 这类常量,jfinal 3.3 考虑将这些常量弄成 public 的,便于这类扩展

2017-08-26 15:50

指令扩展又玩出了新意,超赞

2017-08-26 15:49

@阿萨德fei 异常提示大致是 tomcat 启动的时候加载 jar 时出异常,而且说是 jar 包本身的格式有问题

不要用 eclipse 自带的 maven,下载完整的 maven ,并配置 eclipse 指向它

2017-08-26 15:20

异常信息内容没有任何地方与你添加的 jar 有关,很可能是 tomcat 的 webapp 里面有其它的项目,又或者是 tomcat 自身的 jar 包有问题造成的

检验方法很简单:独立运行 tomcat 的 startup.sh 或 startup.bat , 独立启动 tomcat

2017-08-26 12:43

configEngine(Engine engine) 这个方法中的 Engine 对象,默认已经将 baseTemplatePath 设置成了 PathKit.getWebRootPath(),大部分情况下不需要再干预,而且这个值也是 web 项目最佳的配置

少数 maven 类型的 web 项目将模板放在了 src/resources 目录下,最终会被编译到 classes 类路径之下,使用下面的配置是最好的:
engine.setBaseTemplatePath(null);
engine.setSourceFactory(new ClassPathSourceFactory());
这个在手册里面有说明

2017-08-26 10:24

解决办法极其简单,不管用户登录还是没登录,都让其持有一个 session 对象,都在数据库的 session 表中创建一条记录

然后,再为这个 session 添加一个 isLogin 字段,没登录就是 0,登录就是 1。通过 session 对象去获取用户的 account 对象时,先判断一下 isLogin 是否为 1

当然,对于没有注册的用户,accountId 设置为 0 就可以了