前两天我无意间在OSChina中发现了JFinal,于是还没两天我就深深地爱上了她……
所以我果断捐助了!
不过同时我也发现了她的一些问题与不足,在此向JFinal大大提出,希望能得到回应与采纳。
1、前台向后台传递数据时,可以借鉴一下SpringMVC的做法,将参数写在方法参数列表里,然后自动将数据填充到参数中,这样就不用一个个get了……
2、前端Controller做地址映射时,也可以借鉴一下SpringMVC,在方法上添加一个注解用于映射访问路径,且该注解可以覆盖config中的设置,这样更加方便维护,也更灵活,同时可读性也会提高。当然,如果方法上没有该注解则还是沿用原先设置,可以让开发者自由选择。
3、代码生成器在生成model以及mapping时,还可以进一步生成service层的代码,实现简单的CRUD,分页查询等。甚至Controller也可以生成……
4、可以在dao中添加一个简单查询所有记录的方法。
5、我不知道是我对jFinal不熟悉还是怎么,前台向后台提交数据,以及后台向前台传递数据,特别是ajax方式传递数据时,如何自定义日期类型数据的格式?也可以在config中添加一个回调让用户自定义。
6.还有一个比较严重的问题,如果有个html页面使用了模板渲染则必须由controller转发才能正常显示,如果用户在浏览器地址栏直接输入文件地址访问则会造成灾难性后果……其实就是jFinal对于静态资源如何管理?
PS:其实我想加入club来着,但是我从来不用微信红包的,能不能用支付宝啊……
1:action 参数自动注入的功能早在两年前就已经实现过,但在上线之前去掉了这个功能。主要是这个功能要么对用户有硬性要求,例如强制使用 JDK 8 并且还要在编译时打开保留参数名称,要么就必须引入类似于 @ParameterName 这样的注解。当然 jfinal 自己也有一个自创的方案,不过仍然觉得不满意,所以没有去实现
这个功能最核心要解决的问题是获取方法形参的参数名,spring 通过引入注解或者强制使用 JDK 8 并且设置编译参数保留住方法形参名称
此外,jfinal 是有 getModel、getBean 这类一次性注入大量属性的 API 的,或许你误以为只有 getPara
2:jfinal 目前已经有 @ActionKey 这个注解可以在 action 上指定访问路径,而且是系统启动时一次性生成映射。此外 jfinal 路由解析没有使用循环,更没有使用正则匹配,仅仅使用了一次从 map 中获取数据,以及一个 string 的 substring,所以 jfinal 的路由解析可能是所有 web 框架中最快的
3:jfinal 目前只做了最有需求的代码生成部分,而 service、controller 这部分的生成不同的开发者可能有不同代码组只习惯,jfinal 希望给开发者留下一个广泛的自由空间,况且 jfinal 是极简设计,代码量本身就少,手写点代码也不费事
此外,这里已经有了更强大的生成器:http://www.jfinal.com/project/4
4:自己实现也很简单:dao.find("select * from table"),jfinal 没去实现一来是因为太简单,二来是不提倡, select * 在阿里这样的公司是禁止的,况且 where 条件也没有,这种查询对于大部分的 table 来说是不需要的
5:日期型数据默认支持:yyyy-MM-dd 以及 yyyy-MM-dd HH:mm:ss,可以任选一种格式来组织数据,自定义日期的功能已经在备忘录中了,待添加
6:jfinal 默认不处理静态资源,而是将静态请求直接交由 tomcat、jetty 这类东东,当然你可以通过自定义 Handler 来处理静态资源
如果担心有人直接访问静态资源,在生产环境下通过有如下几种办法:
a:如果前端有 nginx,直接接管
b:如果不希望用户直接访问到静态 html,可以放在 WEB-INF 之下或者用 handler 进行拦截