jfinal部署到tomcat下无法获取多表联合查询的字段值

多表联合查询的字段值使用别名后,在页面用对象${obj.get("别名")}在使用jfinal自带运行下是正确获取数据的,但是部署到tomcat后就不行了,望大虾们讲解下

blob.png



blob.png





blob.png

评论区

455386896

2016-08-26 23:28

@JFinal 麻烦您帮我看看

JFinal

2016-08-26 23:30

用的是 jsp 页面,还能 ${obj.get(...)} ? 应该是不行的

JFinal

2016-08-26 23:44

@455386896 试试 ${obj.userName} 注意大小写与 sql 中的 as 别名一致

455386896

2016-08-27 11:29

@JFinal 在eclipse下是可以这样取到值的,但是部署到tomcat下就不了,关键是那个字段本身不是这个对象所拥有的哦,是要其它表联合查询出来的值哦,你说的按别名一样取会报没这个字段哦。

JFinal

2016-08-27 11:40

@455386896 是用的 jfinal 2.2 并且为 model 生成了 getter、setter 方法吧? 如果是这样的话,那么 ${obj.userName} 确实获取不到,因为 getUserName() 这个方法并不存在

JFinal

2016-08-27 11:45

在项目启动的时候调用一下:ModelRecordElResolver.setResolveBeanAsModel(true) 这个方法,可以让 jfinal 绕过 getter 方法,转而调用内部的 attrs.get(key) 方法,然后界面使用: ${obj.userName} 即可

455386896

2016-08-27 11:57

@JFinal 这样还是不行的,我刚刚想到你说getUserName是不存在的,我结果在那个对象中手动构建那个对象,然后在查询的时候别名成userName,在页面再使用${obj.userName} 即可获取数据,但是这样以后要是重新生产实体类的话,就麻烦点了

455386896

2016-08-27 12:01

@JFinal 是用的 jfinal 2.2 并且为 model 生成了 getter、setter 方法的,现在问题就是多表查询后外表那些字段在jsp页面上不是很方便取值呀

JFinal

2016-08-27 12:10

@455386896 前面说过了,用 ModelRecordElResolver.setResolveBeanAsModel(true) 可立即解决

455386896

2016-08-27 12:17

@JFinal 用 ModelRecordElResolver.setResolveBeanAsModel(true) 在
public static void main(String[] args) {
ModelRecordElResolver.setResolveBeanAsModel(true);
JFinal.start("WebRoot", 8099, "/", 5);
}
是这样吗?但是还是不起效果,会报错不存在这个字段呢

JFinal

2016-08-27 15:50

@455386896 在 public void afterJFinalStart() 中调用是最好的,注意看手册中的这个方法的用法。
此外,这样配置以后,一定要注意使用 ${obj.name} 的形式,而不能使用 ${obj.getName()}

热门反馈

扫码入社