2017-06-05 16:30

setSessionAttr(...) 的源代码如下:
public Controller setSessionAttr(String key, Object value) {
request.getSession(true).setAttribute(key, value);
return this;
}

可知道 session 的实例化是自动化的,你的代码出现了 Null Pointer Exception,应该是 request.getSession(true) 这一行代码出的问题,这一行代码 jfinal 仅仅是转调了一下底层的 HttpServletRequest,这个在历史是从未出现过问题

目前为止我也不知道原因

2017-06-05 16:06

最终的异信息是: Caused by: java.lang.IllegalArgumentException

但很奇怪,无法通过这信息知道是啥原因,建议单步调试看看

2017-06-05 11:11

@怪物 必须要看控制台的错误才好解决问题,如果没有,添加一下 log4j.jar 与 log4.properties 文件

2017-06-04 17:24

异常信息表明 mysql 驱动可能有问题,包名很奇怪,换个驱动试试

2017-06-03 18:03

@Han_JiaLin 这个问题肯定与 jfinal 无关,jfinal 上传文件的功能用了六年多了,从没出现过这个问题,极其可靠

2017-06-03 17:34

这个不是 jfinal 提供的,连我也是刚刚才看到的

2017-06-03 14:40

@Han_JiaLin 浏览器的 F12 是最好的办法,没有比这更好的办法了

2017-06-03 14:34

@Han_JiaLin 你确定是 post 上传的? 在浏览器中按一下 F12 键,打开浏览器的开发者工具,用眼睛去看事实,不要去猜

2017-06-03 14:28

@Han_JiaLin 默认允许上传 10MB 的文件,可以通过 me.setMaxPostSize(...) 来设置这个值

此外,你还要注意 tomcat 与 jetty 这类容器是不是配置了上传文件大小的限制

2017-06-03 13:36

多多分享一些自己觉得有价值的文章出来,感谢支持社区发展

2017-06-03 13:35

如果使用 getModel(...) 则对应于表字段的字段名

如果使用 getBean(...) 则对就于 Bean/Model 之中的 setter 方法,例如:User 类中有一个 setUserName(String ...) ,那么这个名称就是 userName,处理方式为:
setUserName 这个方法名去掉 set 前缀,并将剩下的部分首字母变大写

2017-06-03 13:33

Db.query 方法返回的 List 中只包含如下两种格式:
1:Object
2:Object[]

如果sql 语句中的 select 只有一个字段,则返回 Object,否则返回 Object[],根据情况进行一个选择就好

如果不满足需求,可以使用 Db.find(...) 方法,而不要使用 Db.query,这两个方法的主要区别是,前者将返回值封装在 Record 对象之中,后者只封装在 Object 或 Object[ ] 之中

2017-06-03 13:30

@Han_JiaLin 上传文件的请求被重定向是 tomcat 的问题,看这个贴子来解决一下:http://www.oschina.net/question/941098_93842

2017-06-02 12:01

有部分想法是很不错的,例如坚持轻量级 COC 与极速开发原则,数据库访问优化,都一直在做的事

有些东东持谨慎态度,例如微服务的支持,本质上 jfinal 可用于微服务架构中的每个微服务之中,哪怕你的某个微服务没有用到 web 模块,用一下 active record 以及 template engine 也是可以的

而微服务更多内容是各服务的治理以及连通的事情,这个已经超出了 jfinal 原本的定位。如果开发者确实很有需求,也只会做成扩展功能

jfinal 一直定位于 web mvc + orm,其他的功能几乎都是对第三方进行的极薄封装,例如 cache、druid、redis 之类的封装

要做到极简,就必须保持克制。jfinal 的发展坚持生物进化规律,在 DNA 被复制时产生变异,保留好的变异,随着认知的提升去掉原来不好的东西,拥抱变化,拥抱不确定性,随着时间的推移,逐步进化成更加先进的物种