参数注入的方式获取model有bug,获取不到带有 "_" 的参数

image.png

使用参数注入的方式获取model是获取不到带有 "_" 的参数的

而使用传统的getModel方式是可以获取到的

评论区

糊搞

2020-07-16 16:10

使用getBean()就可以

JFinal

2020-07-16 17:01

有个很重要的事情, 参数注入本质还是用的 getModel 与 getBean ,所以如果你用 getModel 工作正常,但参数注入不正常,只有一种可能, 那就是你的参数注入其实用的是下面这个:
getBean(...);

而不是用的 getModel

那么问题变成了, jfinal 的参数注入在什么情况下调用 getModel,什么情况下调用 getBean?

答案是如果你的 Pay.java 实现了 com.jfinal.plugin.activerecord.IBean 这个接口,就会使用 getBean,否则如果继承了 Model 就会使用 getModel,其它情况使用 getBean, jfinal 中的相关源代码如下:

if (com.jfinal.plugin.activerecord.IBean.class.isAssignableFrom(typeClass)) {
//实现了IBean接口,优先按BeanGetter来处理。
return new BeanGetter(typeClass, parameterName);
}
else if (com.jfinal.plugin.activerecord.Model.class.isAssignableFrom(typeClass)) {
return new ModelGetter(typeClass, parameterName);
}
else {
return new BeanGetter(typeClass, parameterName);
}

那么问题就可以最终确定为,你在表单域中的 order_id 没有对应到相应的 setter 方法

czc-it

2020-07-31 10:02

@JFinal 生成的model是 implements IBean 的如果删掉有什么其他影响吗,目前删掉这个是可以正常注入的

热门反馈

扫码入社