2020-08-01 17:38
@李通 通过看你的视频,得知问题其实很明显, Model 是一个抽象类,是不允许被创建实例的,所以 objClass.newInstance() 必然报异常
你在 spring 中能用,很可能是因为你在 spring 中创建的类并 "不是抽象类",而是一个具体类,也就是说 spring 中你能获取到传入泛型的具体类型,而在 jfinal 中你没有获取到
没有获取到的原因很可能是泛型获取的时间太早了,因为 controller 中 action 的初始化是在启动时进行的
你试着将 LayuiCurdControler 改成不用 action 参数注入而是使用 getBean 来解决:
public class LayuiCurdControler 《E extends Model《E》》 extends Controller {
public void saveOrUpdate() {
Class beanClass = getBeanClass();
Model model = getBean(beanClass, "", true);
renderJson(...);
}
}
以上有两个关键点:
1: saveOrUpdate 方法不要给定形参,而是在方法体内部用 getBean或者 getModel 来实现
2:通过 getBeanClass() 来获取当前泛型传递过来的具体类型,具体到你演示的例子中,值为 DbConnectionInfo.class
getBeanClass() 中可以利用 java 的一些反射 API 来获取
2020-07-31 13:19
@Erica 在 qq 里面搜索群: jfinal,然后在群里面 @ 我
2020-07-31 12:55
@吾同树 在群里面找我,我发文件给你
现在下载不了是因为域名正在变更备案,无法使用服务
2020-07-30 20:47
@rainbowSea 这个是 JDK 自己的行为,jfinal 未干预过
这个目录应该是与你启动 JVM 时候的目录有关,建议根据不同操作系统来做,windows 下使用盘符 + 冒号,如 : D:/www/upload
2020-07-29 17:16
@jfinal爱好者22 忘了一个重要的配置:
configConstant(Constants me) {
me.setInjectDependency(true);
}
以上配置开启注入功能,如果希望对父类进行注入,还需要添加一行配置:
me.setInjectSuperClass(true);
2020-07-29 16:38
@jfinal爱好者22 使用 @Inject 注入,必须有一个起点是被 jfinal 接管的,三个主要的起点:
1:Controller
2:Interceptor
3:Aop.get(...)
这个就跟 spring 中使用依赖注入的时候,对象的创建是被 spring 接管的是一个道理,不能自己 new 出对象, new 出对象,意味着没有被框架接管,没被接管就没有注入的机会