先说一下具体实验背景:
现在要开发一个用户数据查询,并在DataGrid中显示查询结果的功能。
有一个特殊的需求,用户有一个状态属性(分别是“锁定”、“未锁定”),在数据库中存储的格式0或1。通过ibatis读取数据库的返回类型设置的是:resultClass="com.xdja.pms.beans.User",因此每行查询结果会由ibatis封装为User对象,返回包含对象的list。也就是说ibatis返回的是01,但是我要实现在DataGrid中显示的数据是“锁定、未锁定”。因此我在User中加入了一个stateName成员,并为它加了getStateName方法。stateName的值在setState方法被调用的时候进行赋值。
数据来源 :提供给dataprovider的数据是一个List<User> list对象;数据从Mysql数据库中取得。
MXML文件中代码片段 :
(1)远程调用定义 :
(2)绑定数据定义 :
(3)DataGrid设置 :
远程对象的配置:remoting-config.xml中加入配置信息:
万事具备,开始运行!
结果错误出来了:用户状态那一列没有出现预期的值!肯定有地方出错,立即查找原因……
stateName的get方法也有啊,为什么还有错误?
唯一没有的是stateName缺少Set方法,但是它在SetState的时候已经赋值了啊,为什么?
抱着侥幸的信息,加入一个SetStateName方法,设置为public。重启项目……
访问,问题解决。
经过分析,问题最可能出现的原因是在MXML中绑定数据的时候:
private function getUsers_ResultHandler(event:ResultEvent):void{
userinfoDP = event.result as ArrayCollection;
}
这个转换。
但是如果这个转换需要调用各个对象的get、set方法的话,调用getState方法同样会给stateName赋值啊,那么为什么会不能显示?
问题虽然解决了,但是这个疑问依然纠结着。希望大家知道的留言,给出一些指导……