2017-12-13 17:47

参考下这个贴子:http://www.jfinal.com/share/422

2017-12-13 16:48

1:一开始是为了使用同样的 url 值,通过 GET、POST、PUT、DELETE 去请求不同的 action 方法,例如:
GET localhost/user/1 用于访问 UserController.detail() 方法
PUT localhost/user/1 用于访问 UserController.update() 方法

除了上面的 GET、PUT 这些以外,还有一些 DELETE、HEAD 之类的 对应到更多的 action 方法,但是 http 协议里头并不支持 DELETE 等请求类型,所以请求类型不够用,要完全实现,就需要引入隐藏表单域并用 POST 请求来辅助

上面的用法很鸡肋,所以 spring 在实战中并没有利用这个机制来制定 URL 规则。绝大部分情况仍然是用不同的 url 访问不同的 action,但 spring 已经忘记了来时的路,还在继续用着 GetMapping、PostMapping 这样原先为了别的目的而建立的规则

jfinal 则不同,是直接就跳过那些鸡肋设计,将请求类型动作直接放在 url 中,例如:
localhost/user/delete/1
localhost/user/update/1

此外,还有一个谈不上好处的功能,就是你的 GetMapping 注解过的 action 无法被 POST 请求访问到,仅是一个功能,实际用处从没人提出来过,估计是没有任何好处

2:用 Post 做所有请求,那么网页中的超链接就没法访问到这些 action 方法了,因为浏览器的在点击超链接时发起的是 GET 请求

3:jfinal 通过深入分析 rest 建议的 url 风格,以及 spring 的实践,认定是个鸡肋后,做出的最终设计,简洁、方便、性能高、学习成本低

2017-12-13 16:32

@阿普 已提交 issue: https://gitee.com/dreamlu/Easy4JFinal/issues/IGSOH

感谢你的反馈

2017-12-13 16:27

@leomj 没有主键的话, model.save()、model.update()、model.delete() 这些方法就不可能实现,前面这三个方法生成 sql 时,都是要依赖 id 生成 where 部分的,例如:
...... where id = ?

2017-12-13 14:23

异常提示 jdbc driver 不对,换一个试试,在本站首页里头可以下载 jfinal-3.3-all.zip,里头就有这个 jar 包

2017-12-13 14:21

@獨愛 能不能在这个贴子里头追加解决方案的这部分内容,最近好多人问到这个问题,先谢谢了

2017-12-13 13:23

字符串类型的主键肯定是支持的,单步调试一下,看是什么原因引发的

2017-12-13 12:13

@二当家的 有了你们社区的帮助,拿第一有希望啊,再次感谢 ^_^

2017-12-13 12:07

再补充一个改源码的方案:
创建一个 com.jfinal.core 的包到你的项目中,然后将 jfinal 源码中的 Config.java 拷贝过来,改掉里头的次序

如果觉得这样不太好看,可以将这个包创在 src/main/resources 目录下面,这样在开发的时候一般是看不到的, jfinal 3.4 发布以后,再删掉这个改动就可以了

此外,不用改源码的方案,除了我前面介绍的以外,或许 @玛雅牛 也有一个,找一下作者:
https://my.oschina.net/myaniu

2017-12-13 12:06

还想到一个不用改源码的方案:
1:做一个 MyActionMapping extends ActionMapping,在里头覆盖掉 buildActionMapping() 方法,拿到自己想要的东西,然后调有 super.buildActionMapping()

2:再做一个 MyActionHandler extends ActionHandler,覆盖 init(...) 方法,在里头趁机将 ActionMapping 这个参数换成自己的 MyActionMapping

3:在 configHandler(Handlers me) 中配置一下即可:
me.setActionHandler(new MyActionHandler());

记得搞定后回来分享

2017-12-13 12:02

@二当家的 感谢感谢,夺第一主要的优势就是能加快 jfinal 普及

2017-12-13 11:37

@懒猫 主要是当时没想到会有这个影响,jf 3.4 会想办法解决,已经有了初步的方案,尽可能做到可以定制 configPlugin 的次序

此外,我也希望得到你的应用场景,这样在做这个功能时候能掌握更多信息量,做得更好

2017-12-13 11:35

@说忘了 用的 《》 符号,非常机智,感谢你的分享 ^_^

2017-12-13 10:58

@懒猫 这里有一个相关的贴子:http://www.jfinal.com/feedback/2661