Sjoedzj
%Europe/Berlin %532 %2008, 13:47
Hallo,
Ik zit met een bug waar ik niet uitkom.
Ik heb een flex applicatie waar ik, als er op de button geclickt wordt, met een remote object een functie getUsers aanroep aan de server side. Ik krijg uiteindelijk een ArrayCollection binnen waar ook daadwerkelijk in een Object de user informatie in zit. Als ik deze probeer te casten naar een User Object of als ik een nieuwe probeer aan te maken zoals hieronder krijg ik de volgende error:
ArgumentError: Error #1063: Argument count mismatch on pojo::User(). Expected 3, got 0.
Als ik een constructor User() maak en user opbouw zoals in het stukje in commentaar dan werkt het wel...
code:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx: Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
import mx.collections.ArrayCollection;
import vo.User;
public var users:ArrayCollection = new ArrayCollection();
[B]
public function handleUserResult(event:ResultEvent):void{
var result:ArrayCollection=event.result as ArrayCollection;
for(var i:int=0;i<result.length;i++){
var obj: Object = result.getItemAt(i);
var user:User = new User(obj.firstName, obj.lastName, obj.age);
//var user:User = new User();
//user.firstName = obj.firstName;
//user.lastName = obj.lastName;
//user.age = obj.age;
users.addItem(user);
}
}
]]>
</mx: Script>
<mx:RemoteObject id="srv" destination="UserService" fault="Alert.show(event.fault.toString())" >
<mx:method name="getUsers" result="handleUserResult(event)" fault="Alert.show(event.fault.message)" />
</mx:RemoteObject>
<mx:Tree id="tree" dataProvider="{users}" labelField="lastName" x="115" y="54" width="200" height="300">
</mx:Tree>
<mx:Button x="333" y="464" label="Button" click="srv.getUsers()"/>
</mx:Application>
User.as:
package vo
{
[RemoteClass(alias="vo.User")]
[Bindable]
public class User
{
public var firstName: String;
public var lastName: String;
public var age:int;
public function User(firstName: String, LastName: String, age:int){
this.firstName = firstName;
this.lastName = lastName;
this.agec= age;
}
public function toString(): String{
return firstName+" "+lastName;
}
}
}
Ik zit met een bug waar ik niet uitkom.
Ik heb een flex applicatie waar ik, als er op de button geclickt wordt, met een remote object een functie getUsers aanroep aan de server side. Ik krijg uiteindelijk een ArrayCollection binnen waar ook daadwerkelijk in een Object de user informatie in zit. Als ik deze probeer te casten naar een User Object of als ik een nieuwe probeer aan te maken zoals hieronder krijg ik de volgende error:
ArgumentError: Error #1063: Argument count mismatch on pojo::User(). Expected 3, got 0.
Als ik een constructor User() maak en user opbouw zoals in het stukje in commentaar dan werkt het wel...
code:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx: Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
import mx.collections.ArrayCollection;
import vo.User;
public var users:ArrayCollection = new ArrayCollection();
[B]
public function handleUserResult(event:ResultEvent):void{
var result:ArrayCollection=event.result as ArrayCollection;
for(var i:int=0;i<result.length;i++){
var obj: Object = result.getItemAt(i);
var user:User = new User(obj.firstName, obj.lastName, obj.age);
//var user:User = new User();
//user.firstName = obj.firstName;
//user.lastName = obj.lastName;
//user.age = obj.age;
users.addItem(user);
}
}
]]>
</mx: Script>
<mx:RemoteObject id="srv" destination="UserService" fault="Alert.show(event.fault.toString())" >
<mx:method name="getUsers" result="handleUserResult(event)" fault="Alert.show(event.fault.message)" />
</mx:RemoteObject>
<mx:Tree id="tree" dataProvider="{users}" labelField="lastName" x="115" y="54" width="200" height="300">
</mx:Tree>
<mx:Button x="333" y="464" label="Button" click="srv.getUsers()"/>
</mx:Application>
User.as:
package vo
{
[RemoteClass(alias="vo.User")]
[Bindable]
public class User
{
public var firstName: String;
public var lastName: String;
public var age:int;
public function User(firstName: String, LastName: String, age:int){
this.firstName = firstName;
this.lastName = lastName;
this.agec= age;
}
public function toString(): String{
return firstName+" "+lastName;
}
}
}