关于flex,如何将java端返回的arraylist类型绑定到flex tree组件的dataProvider上?

OnlyFor_love 2008-10-18 03:22:13
比如我的java端返回的arraylist如下所示:
public ArrayList getTreeData(){
ArrayList al = new ArrayList();
for(int o=0;i<5;i++){
al.add("hello"+i);
}
return al;
}


在flex的mxml页面中tree组件代码如下:
<mx:tree id='myTree'/>

利用RemoteObject将java端的arrayList取到,var myarray:ArrayCollection = ro.getTreeData() as ArrayCollection;
我在actionscript中利用 myTree.dataProvider = myarray;

但是这样的结果却是tree组件没有任何显示。经过测试myarray是有数据的,因为数据的格式和tree组件的ArrayCollection不符合,所以没有任何显示,我要问的就是如何将java端返回的arraylist类型绑定到flex tree组件的dataProvider上,也就是说让java端返回的arraylist类型转换成符合tree需要的类型?
...全文
2161 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhou10000 2009-07-02
  • 打赏
  • 举报
回复
arrayList 跟 mxml 的 arraycollection 是对应的
你需要些一个 as的 class 对应·
OnlyFor_love 2008-10-26
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 miaoliujun 的回复:]
显示定义类型为 <String> 呢?
[/Quote]


你的意思是将arraylist显示定义为string??
public ArrayList<String> aaa(){

}

这样吗???
好像是有点意思?不过如果是一个树形结构的话,我不知道这样的显示定义能返回什么结构?xml的树形结构?
OnlyFor_love 2008-10-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sunyujia 的回复:]
java中的ArrayList到flex的ArrayCollection是自动的
我所以我的猜想java代码如下
ArrayList al = new ArrayList();
for(int o=0;i <5;i++){
Map map=new HashMap();
map.put("type","typetest");
map.put("name","nametest");
al.add(map);
}
return al;
[/Quote]


感谢你sunyujia的回答,你的代码给了我不少启示,我准备测试一下,因为flex对于java端返回的map类型可以通过key来获取value对应的值,那么我在java端应该可以将arraylist对应到map中去。
半山岩 2008-10-24
  • 打赏
  • 举报
回复
给你看个简单的例子:
1.从java中一类
public class userInfo {

private int ID;
private String name;
private String sex;
private int age;
private String password;
...
...
get/set方法
}

2.增加一个session bean.类名DBMySQLService.

public userInfo[] getUsers() {
return userdataset;
}


3.在WebContent/WEB-INF/FLEX
在remoting-config.xml中增加一个数据源

<destination id="myService">
<properties>
<source>DBMySQLService</source> --java数据源
</properties>
</destination>


4.在Flex_01.mxml中加入一个
<mx:RemoteObject id="GetUsers" destination="myService"/>

private function initApp():void
{
GetUsers.getUsers.addEventListener(ResultEvent.RESULT,OKHandleEvent);
GetUsers.getUsers(); //getUsers()为java反馈函数
}

增加一个DataGrid组件 id = dgb

private function OKHandleEvent(evt:ResultEvent):void{
dgs.dataProvider = ArrayUtil.toArray(evt.result);
}
半山岩 2008-10-24
  • 打赏
  • 举报
回复
补充下:
DBMySQLService 是java环境编写的类名,
然后用GetUsers.getTreeData()得到返回的纪录
半山岩 2008-10-24
  • 打赏
  • 举报
回复
在WebContent/WEB-INF/FLEX
在remoting-config.xml中增加一个数据源

<destination id="myService">
<properties>
<source>DBMySQLService</source> --java数据源
</properties>
</destination>
然后在MXML文件中加入:
<mx:RemoteObject id="GetUsers" destination="myService"/>

希望能帮到你
miaoliujun 2008-10-21
  • 打赏
  • 举报
回复
显示定义类型为<String> 呢?
l_wenb 2008-10-21
  • 打赏
  • 举报
回复
帮顶!学习!
lihan6415151528 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sunyujia 的回复:]
我猜想是map hashmap
我想跨语言只能用map来描述如下的这种结构。
map的key是属性value是值
子节点又是list
和javascript的json格式一样似乎

XML codeprivate var companyData:ArrayCollection = new ArrayCollection(
[ {type:"department", title:"Finance", children:new ArrayCollection(
[ {type:"employee", name:"John H"},

[/Quote]


支持敢大胆猜想的人
DiscussQuestions 2008-10-20
  • 打赏
  • 举报
回复
楼主的意思有一点明白!~!
但是flex这个东西还没有接触过~!
关于树的问题用JavaScript和JSON做过!~!
呵呵~!期待有高手来给你解决这个问题!~!
顶了!~!
liangtingsenkk 2008-10-20
  • 打赏
  • 举报
回复
我顶
liangtingsenkk 2008-10-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tiyuzhongxin789 的回复:]
private var companyData:ArrayCollection = new ArrayCollection(
[ {type:"department", title:"Finance", children:new ArrayCollection(
[ {type:"employee", name:"John H"},
{type:"employee", name:"Sam K"} ] ) },
{type:"department", title:"Engineering", children: new ArrayCollect…
[/Quote]
正解:
OnlyFor_love 2008-10-19
  • 打赏
  • 举报
回复
sunyujia:

你说的这个意思没错,确实需要转换成这样的格式,但是静态的去定义没有问题,问题就在我的数据是动态的,也就是从后来取的,那么我在mxml中new ArrayCollection()的时候怎么去写呢?
tiyuzhongxin789 2008-10-19
  • 打赏
  • 举报
回复
private var companyData:ArrayCollection = new ArrayCollection(
[ {type:"department", title:"Finance", children:new ArrayCollection(
[ {type:"employee", name:"John H"},
{type:"employee", name:"Sam K"} ] ) },
{type:"department", title:"Engineering", children: new ArrayCollection(
[ {type:"employee", name:"Erin M"},
{type:"employee", name:"Ann B"} ] ) },
{type:"department", title:"Operations", children: new ArrayCollection()}
] );
sunyujia 2008-10-19
  • 打赏
  • 举报
回复
为自己的猜想找到点证据http://zhidao.baidu.com/question/65043211.html
注意这句话
FLEX里没有MAP类,但只要你知道了JAVA里MAP的KEY,那么FLEX里就可以作为OBJECT的一个属性来访问。
sunyujia 2008-10-19
  • 打赏
  • 举报
回复
java中的ArrayList到flex的ArrayCollection是自动的
我所以我的猜想java代码如下
ArrayList al = new ArrayList();
for(int o=0;i <5;i++){
Map map=new HashMap();
map.put("type","typetest");
map.put("name","nametest");
al.add(map);
}
return al;
sunyujia 2008-10-18
  • 打赏
  • 举报
回复
我猜想是map hashmap
我想跨语言只能用map来描述如下的这种结构。
map的key是属性value是值
子节点又是list
和javascript的json格式一样似乎
private var companyData:ArrayCollection = new ArrayCollection(
[ {type:"department", title:"Finance", children:new ArrayCollection(
[ {type:"employee", name:"John H"},
{type:"employee", name:"Sam K"} ] ) },
{type:"department", title:"Engineering", children: new ArrayCollection(
[ {type:"employee", name:"Erin M"},
{type:"employee", name:"Ann B"} ] ) },
{type:"department", title:"Operations", children: new ArrayCollection()}
] );


以上答案纯属猜想
sunyujia 2008-10-18
  • 打赏
  • 举报
回复
明白楼主的意思可惜我不会flex,你用xml形式返回串是否简单些,要么就再找找相关的结构定义。
java__king 2008-10-18
  • 打赏
  • 举报
回复
我也没玩过flex,学习学习,呵呵.
zhj92lxs 2008-10-18
  • 打赏
  • 举报
回复
呵呵,没玩过flex
加载更多回复(1)

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧