2017-08-17 12:15
@wu482525 目前不支持,建议写个 getBeans(...) 方法进行扩展,大致如下:
List list = new ArrayList();
for (int i=0; i<size; i++) {
Xxx xxx = getBean(Xxx.class, "beanName[ " + i + "]");
list.add(xxx);
}
return list;
然后表单里面的 name 做成如下的形式就可以了:
name="beanName[0].attrName"
name="beanName[0].otherField"
name="beanName[1].attrName"
name="beanName[1].otherField"
2017-08-16 23:20
@王晓辉 映射路由的时候碰到 actionKey 相同的情况会直接抛出异常,项目将无法启动,也就不存在选择哪个执行的问题了
actionKey 必须是唯一的
2017-08-16 17:02
@dear7575 用一个独立的表去存放 userName 与 configName 的关系,查询的时候用 Db + Record 模式:
1:用一个全局拦截器
2:拦截器中得到当前登录用户的 userName,这个就是传统的登录功能,不再多说
3:String configName = Db.queryString("select configName from configTable where userName=?", userName);
4:将这个 configName 放在当前拦截器的一个 static ThreadLocal threadLocal 对象中
5:通过引入一个中间的 MyBaseModel extends Model,覆盖一下父类的 _getConfig() 方法,从 threadLocal 中拿到 configName,然后直接:
return DbKit.getConfig(configName);
6:最终的 Model 继承一下这个 MyBaseModel,如果用了生成器生成过 BaseModel,可以让所有生成的 BaseModel 由继承 Model 改为继承 MyBaseModel,扩展一下 BseModelGenerator 中的 genClassDefine() 方法即可,极度容易
2017-08-16 16:47
@Sea-sea 一定要注意:没有parameter这一栏这的情况是数据根本没到服务端,是无论如何也得不到数据的,死死盯着前端去解决问题就好
你的 js 写得不规范,少了分号 ;
2017-08-16 16:37
@Sea-sea 看一下 jfinal action report 中的 parameter 这一栏
2017-08-16 16:07
@麻言 为了性能最大化,jfinal 里面的所有的控制层拦截器是在系统启动的时候,一次性建立好对应关系的,这个关系那好以后就存放在了 Action 这个对象里头,是不能改变的
但这仅仅是 jfinal 层面上的解决方案,你完全可以添加一个 jfinal 全局拦截器,然后在这个拦截器里面添加一个自己的拦截器架构,让这个架构可以动态配置就可以了
仿照一下 jfinal 的已有拦截器体系,在全局拦截器内部再搞一个拦截器体系出来就可以动态化了
重点在于对 Invocation 与 Interceptor 工作方式的理解决,可以看一下 InterceptorStack 这个类中的 intercept(...) 方法中的 new InvocationWrapper(inv, inters).invoke(); 这行代码,仿照着写一个很容易
2017-08-16 16:02
@mingxin1021 由于 BaseModelGenerator 这个对于生成器来说是必须的,所以需要通过构造方法传进去,前面是笔误,更正如下:
new Generator(new MyBaseModelGenerator());
2017-08-16 15:53
@Willson_L 很久以前用过 lucene,后来貌似有对 lucene 封装得更好的第三方了,建议你在俱乐部群里问问有经验的同学
2017-08-16 15:50
@素夜儿 获取到的 token 值,在 jfinal weixin 这一端会每次都检测是否有效,所以,无论微信平台的行为是什么,都足以应对了
微信平台的文档经常出错,而且平台也有 bug,经常与文档描停不符
我建议这样,你在用的时候,如果出现了微信平台时间上的不对,看看 jfinal weiwixn 是否重新获取了 token 值,是否解决了平台的错误,作为一个 sdk 如果微信平台有问题,能解决它的问题就很好了