2017-04-13 15:43
@要输就输给追求 微信买单成功后会向手机微信推送消息,你可以在电脑上用 android 模拟器运行一个微信客户端,拿到这个推送的消息就可以做相关业务了
脑子要多转转
2017-04-13 14:40
@hiberk 通过继承一下 MetaBuilder 类,然后覆盖掉其中的 isSkipTable(String tableName) 方法,可以随心所欲控制想要的处理的 table
isSkipTable 方法 return true 时将过滤掉当前 table,可以利用正则,或者其它自己合适的方式设置规则,只处理自己想要的 table
generator 模块所有组件都面向扩展设计,可以通过继承自由定制功能
2017-04-13 14:34
@芒果过敏 只要是多线程可以同时访问的对象就要注意线程安全,是你的代码中有 static,表明有对象是全局共享的,不仅这个 static 声明的对象要注意线程安全,而且这种共享可以像链条一样一直传递下去
性能方面几乎没有差别多调一层方法而已
2017-04-13 11:21
办法有很多,这里只说三种:
1:创建该拦截器的一个继承类,在构造方法中直接 new UserService() 给它用
2:自定义一个注解,让这个注解可以接收一个 class 形参数,例如创建一个名为ConfigService的注解:
@ConfigService(UserService.class)
然后在你的那个 TestInterceptor 中通过下面的方法创建:
Class serviceClass = inv.getMethod.getAnnotation(ConfigService.class).value();
然后再创建这个业务类对象:
serviceClass.newInstance();
打完收枪
3:还可通过 url 或者 setAttr 或者 threadlocal 来传个参到拦截器,拦截器再做出判断
2017-04-12 21:14
@程序猴 后端直接: getModel(....).update() 就可以打完收枪了,不需要弄那么麻烦
前的 input 也有问题,modelName 前缀都没有,所以 getModel 完全无法工作,这些都是基本,为何不看看 jfinal 手册,里面 getModel 怎么用,表单中怎么写都有实例
首页的 jfinal demo,有一个 Blog 表单的增删改查,已经简单到了极致,为何不照着里面来写表单:
input name="blog.title"
input name="blog.content"
这些表单的 name 都没有,后端怎么工作?