2017-03-24 21:51

jetty 有个配置可以解除这个限制,找找想关的资料

2017-03-24 21:23

@heijie730 我看到你已经加入俱乐部了,这个问题直接来俱乐部专享群里面来问一下,帮你解决一下

2017-03-24 21:15

找不到 JFinalFilter 这个类,环境没配置好,建议仔细看一下 jfinal 手册,如果是部署在 tomcat,注意看一下这个贴子:https://my.oschina.net/jfinal/blog/353062

2017-03-24 21:13

@jerry1216 如果这种重用特别多,抽取一个 BaseController 是值得的,例如 jfinal club 就抽取了 BaseController 专门处理当前登录用户,极其方便,jfinal club 项目的BaseController 中有这些方法:
User getLoginUser()
boolean isLogin()
int getLoginUserId()

这些方法在控制器中直接获取,然后再转头去调用业务层的相关方法极为便利

2017-03-24 17:58

设置好方言,generator.setDialect(new SqlServerDialect()) , 对于 sql server 来说,生成的时候可能会有点小问题,参考这篇贴子解决一下:
http://www.jfinal.com/share/211

同时建议收藏这个贴子,以备不时之需:http://www.jfinal.com/share/211

2017-03-24 17:56

@demigod 不要绕理太远了,重定向是 redirect("/admin") 而不是 renderXxx(...)

多说一句,服务端转发是 forwardAction(...) ,很多人不知道 redirect 与 forwardAction 这两个 API 的用处

2017-03-24 17:54

@zhaozhihong configName 为 main 的是默认数据源,如果你只有一个数据源,那么这第一个也会默认成为主数据源

不要使用 model.dao.use(...),而是要直接 model.use(...) , 这样就没问题了,最终是: model.use(...).find(sql)

通常要封装得更好,可以利用一个全局拦截器,在拦截器中使用一个 ThreadLocal 去存放当前请求该有的 configName,然后在查询的时候,统一使用:
Db.use(Kit.getConfigName()).find(sql, ...) 或者
model.use(kit.getConfigName()).find(sql, ...)

2017-03-24 17:49

@wyntergreg 我这里也是 IDEA 下用的 cos,一点毛病没有,只能说是人品问题了,哈哈

尝试重新创建项目,多半还是配置问题,大家都用得好好的,没毛病

2017-03-24 17:48

这个业务层场景最好是直接在业务层中直接写代码去做验证,验证失败返回一个jfinal 提供的 Ret 对象,然后 renderJson(ret) 即可,俱乐部的 jfinal-club 中有大量的这种用法,非常方便

如果一定要用拦截器,建议如下方法:
1:将 CheckKeyInterceptor 拦截器直接用于业务层,而非控制层
2:业务层的 getCardInfo(...) 使用 User 为形参
3:在 CheckKeyInterceptor 之中通过 inv.getArg() 可获取到 User 参数值,对该值进行验证即可
4:此方法的缺点是你无法在业务层拦截器中直接 renderJson()

如果你希望在拦截器中直接 renderJson 建议采用如下办法
1:仍然使用控制层拦截器
2:在拦截器中通过 inv.getController().setAttr("user", user) 将对象传到控制器
3:控制器中通过 getAttr("user") 得到 user
4:控制器调用业务层时直接传入 user 对象

注意:以上两种办法都需要将业务层改造为传递 User user 形参,而不是 Controller 形参

注意:控制层到业务层只能是单向依赖,不能让业务层去依赖于控制层,所以 EcardService.addLogin(this) 是绝对不可以的,这种依赖方式缺点很多,例如,将来无法将业务层重用于其它场景

2017-03-24 17:35

@ghostsf 既然自己 try catch 住异常,那自然是业务范畴,否则不必 try catch 它,而是让 jfinal 框架自行处理

2017-03-24 11:46

pageNumber 与 pageSize 搞反了,对调一下即可,将下面的代码:
dao.paginate(5, 1, "select *", "from article");

改为下面的代码:
dao.paginate(1, 5, "select *", "from article");

2017-03-24 11:44

数据源挂掉了,可以自己写点代码,通过 try catch 获取到,可以试试用全局拦截器 catch 住 ActiveRecordException 来处理

2017-03-24 11:42

确实在十秒之内没有看懂,但你的 model.dao.use(...) 这种用法是绝对错误的,因为 dao 是 static 的全局共享的,多个人同时访问的时候会出现线程安全问题

补充一下,由于时间极其有限,一般只能花十秒钟左右的时间去扫一眼问题,如果不能秒懂,就只能要求大家继续补充详细

2017-03-24 11:38

具体一点,贴点代码出来表达希望的用法,否则我只能猜测,猜错后会浪费双方的时间

2017-03-24 11:38

啥参数传不进去? 为啥 getSql 没有提供 map 参数?