2016-08-20 16:04

classes 路径下没有任何文件,充分证明编译后的目标文件没有到达这里,两种可能,一是路径配置不对,二是没有编译

jfinal 是标准的普通 java web 项目,所以只要使用以前你部署 java web 的经验就可以了。手册中介绍的将路径改为 "/工程/WebRoot/WEB-INF/classes" 只是为了让集成 jetty 正常工作,对于楼主使用的 tomcat 部署开发方式就不再需要这样做

历史上所有出现这个异常的,全都是改配置就可以了,建议多尝试,例如重新创建项目

2016-08-20 15:55

正确的用法是先用 incr("test"); 或者 incrBy("test", xxx) 进行初始化,然后后面再接着 incr("test") 或者 incrBy("test", xxx),由于 redis plugin 采用了序列化,所以通过 setex(...) 放入的数据已被序列化

2016-08-19 23:52

没秒懂是什么意思? list 循环是指什么? 是指 freemarker 的 list 的迭代指令? 如果是的可以直接在 freemarker 中调用 java 方法,很灵活方便

2016-08-19 23:52

就要是这种探索的精神,jfinal 很多实用的功能并未写在手册中,为的就是让大家在探索发现以后,有成就感,也更有利于大家的求知欲与探险精神

2016-08-19 23:40

两个可能性:一是 User 没有继承 com.jfinal.plugin.activerecord.Model 类,或者其子类。二是在 YourJFinalConfig 中 import User 这个类时引入的并不是希望的类,而是其它第三方 jar 包中的 User类,要知道 User 这个类名称是非常常用的

2016-08-18 18:14

当然,你还可以在后面添加 where 控制一下,需要查询的 user 集合:where u.id in(1,2,3,4..)

2016-08-18 18:13

如果要一条 sql 统计所有用户,将 userId=? 换成 userId=u.id,并且将最后面的 where u.id=? 去掉即可:
select u.userName, t1.a1Num, t2.a2Num from user as u,
(select count(*) as a1Num from a1 where userId = u.id) as t1,
(select count(*) as a2Num from a2 where userId = u.id) as t2

2016-08-18 18:10

这是一个纯 sql 问题,sql 大致这样:
select u.userName, t1.a1Num, t2.a2Num from user as u,
(select count(*) as a1Num from a1 where userId = ?) as t1,
(select count(*) as a2Num from a2 where userId = ?) as t2 where u.id = ?
代码:Db.find(sql, userId, userId, userId);

2016-08-18 17:02

具体一点,将资源路径改为: src="/images/123.jpg", context path 改为 "/",这样就不会在 url 中出现 FBBL 这样的前缀了

2016-08-18 17:01

@ityuri 页面中的资源都用的相对路径,所以在请求以后这些资源会以浏览器 url 栏中当时的路径有关,例如:
你的图片 src="images/123.jpg",你的浏览器地址栏中的是 "/FBBL/gamesDetail",所以最终的资源路径是 src="/FBBL/gamesDetail/images/123.jpg",这个是 web 规范决定的,与 jfinal 无关
解决办法极其简单,资源路径使用绝对路径即可,以 "/" 打头即为绝对路径,这样的话路径就不会随着浏览器地址栏中的路径乱来了

2016-08-18 13:20

最后加上这句: renderNull();

2016-08-18 12:55

@lyh061619 目前版本的 ORM 开发效率已经非常高了,难道你能找到有比这更高效的?

2016-08-18 12:52

@lyh061619 用 jfinal 的 Db + Record 做统计查询极度顺爽,要是用别的技术得累死人

2016-08-18 12:13

很可能是多个应用使用该公众号向微信服务器请求过 access token,这种情况下,只有最后一次请求到的 access token 才有效,前面请求得到的会自动失效。
这种情况通常发生在如下情形:
1:多个应用程序使用同一个公众号,并各自发起 access token 请求
2:同一个应用的不同实例使用同一个公众号
3:在公众平台上使用其官方提供的在线工具获取 access token

2016-08-18 12:09

Db.batchUpdate(...) 已然提供了支持,因为 update 这个词不仅意味着可以 delete 还意味着可以 update。
此外,通常批量删除满足条件的数据就是一个 sql 的事,这样: Db.update("delete from table where a=? and b=? and c=?", x, y, z);