有关flex的值对象问题
当我用remoteobject引用java的方法得到一个值对象我要如何对它进行解析。要知到在那个值对象中还嵌套了一个值对象,我发现我没有办法用as解析。难道as只支持一层对象。
[解决办法]
不管对象多复杂,就算对象里嵌套了几层对象都没关系只要与Java端的实体类Object对应即可
所谓对应简单地说就是用as的语法将Java端的Object重新定义一遍
在as的object中声明下[RemoteClass(alias="java端包名.类名")]//前后台绑定
比如:
[Bindable]
[RemoteClass(alias="com.bean.Person")]
public class Person{
public Student student;
}
[Bindable]
[RemoteClass(alias="com.bean.student")]
public class Student {
public var name:String;
public var age:int;
}
[解决办法]
你试试这样行不行!
比如DataGrid要显示name的属性
设下dataField = "{Student.name}"
我没试过~~~看看行不行,不行的话只能像你说的重组一个Object再赋值
[解决办法]
这位仁兄好像还没明白问题!虽然对象类型可能无法解析,但是属性总归是有属性名称的吧,那么这个复杂对象的复杂类型的属性的类型虽然被Flex解析成了Object类型,但是他的属性名没有变!你一样可以通过属性名访问该对象!但是你不要奢求他可以只能感应(.出来),废话说了那么多,我都有点晕了!举个例子:
比如UserInfo对象有个City类型的city属性,那么其在Java中和Flex中的不同如下:
City.java
public class City {
private long id;
private String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class UserInfo {
private long id;
private String loginName;
private String password;
private City city;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public City getCity() {
return city;
}
public void setCity(City city) {
this.city = city;
}
}
public class Object(Java中的UserInfo)
{
public var id :Number;
public var loginName :String;
public var password :String;
public var city :Object;//Java中City
}
public class Object(Java中的City)
{
public var id :Number;
public var name :String;
}
var item :Object = userList[0];//比如访问第一个元素
var cityName :String = item.city.name;
//或者
var cityName :String = item["city"]["name"];