Bonjour,

J'ai eu une surprise en constatant une erreur (pas du tout explicite) sous flex builder qui semble liée au databinding avec un Vector.

Pour en avoir le coeur net, j'ai recréé un projet tout simple :

Main.mxml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:view="view.*">
 
	<mx:Script>
		<![CDATA[
			import model.MonObjet;
			import __AS3__.vec.Vector;
			[Bindable]
			public var vecteur:Vector.<MonObjet>;
 
 
		]]>
	</mx:Script>
 
	<view:MonComposant monVecteur="{vecteur}"/>
</mx:WindowedApplication>
view/MonComposant.mxml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml">
 
	<mx:Script>
		<![CDATA[
			import model.MonObjet;
			import __AS3__.vec.Vector;
 
			[Bindable]
			public var monVecteur:Vector.<MonObjet>;
		]]>
	</mx:Script>
</mx:VBox>
model/MonObjet.as :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
package model
{
	public class MonObjet
	{
		public function MonObjet()
		{
		}
 
	}
}
J'obtiens alors l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
An internal build error has occurred. Right-click for more information
et voici de que j'ai dans les logs d'éclipse :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
!ENTRY com.adobe.flexbuilder.project 4 43 2010-04-02 09:07:17.726
!MESSAGE Uncaught exception in compiler
!STACK 0
java.lang.NullPointerException
	at flex2.compiler.mxml.InterfaceCompiler$DependencyAnalyzer$AttributeDependencyScanner.property(InterfaceCompiler.java:1432)
	at flex2.compiler.mxml.lang.DeclarationHandler.invoke(DeclarationHandler.java:78)
	at flex2.compiler.mxml.lang.AttributeHandler.invoke(AttributeHandler.java:60)
	at flex2.compiler.mxml.InterfaceCompiler$DependencyAnalyzer.registerDependencies(InterfaceCompiler.java:1372)
	at flex2.compiler.mxml.InterfaceCompiler$DependencyAnalyzer.registerDependencies(InterfaceCompiler.java:1342)
	at flex2.compiler.mxml.InterfaceCompiler$DependencyAnalyzer.analyze(InterfaceCompiler.java:1249)
	at flex2.compiler.mxml.dom.Node.analyze(Node.java:47)
	at flex2.compiler.mxml.InterfaceCompiler.postprocess(InterfaceCompiler.java:458)
	at flex2.compiler.mxml.Compiler.postprocess(Compiler.java:166)
	at flex2.compiler.API.postprocess(API.java:3584)
	at flex2.compiler.API.postprocess(API.java:3551)
	at flex2.compiler.API.batch2(API.java:427)
	at flex2.compiler.API.batch(API.java:1117)
	at flex2.compiler.API.compile(API.java:1290)
	at flex2.tools.oem.Application.compile(Application.java:1074)
	at flex2.tools.oem.Application.compile(Application.java:800)
	at flex2.tools.flexbuilder.BuilderApplication.compile(BuilderApplication.java:354)
	at com.adobe.flexbuilder.multisdk.compiler.internal.ASApplicationBuilder$MyBuilder.mybuild(ASApplicationBuilder.java:271)
	at com.adobe.flexbuilder.multisdk.compiler.internal.ASApplicationBuilder.build(ASApplicationBuilder.java:122)
	at com.adobe.flexbuilder.multisdk.compiler.internal.ASBuilder.build(ASBuilder.java:139)
	at com.adobe.flexbuilder.multisdk.compiler.internal.ASItemBuilder.build(ASItemBuilder.java:73)
	at com.adobe.flexbuilder.project.compiler.internal.FlexProjectBuilder.buildItem(Unknown Source)
	at com.adobe.flexbuilder.project.compiler.internal.FlexProjectBuilder.build(Unknown Source)
	at com.adobe.flexbuilder.project.compiler.internal.FlexIncrementalBuilder.build(Unknown Source)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:624)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:166)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:197)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:246)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:249)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:302)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:334)
	at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:137)
	at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Si je change le type de la variable "monVecteur" en autre chose (ArrayCollection par exemple), je n'ai plus cette erreur.

Ma question est donc la suivante : Est-ce que le data binding est possible sur un vecteur, et si oui comment faire pour ne pas avoir l'erreur ci dessus?
Dans le cas contraire, j'imagine qu'il faut que je transforme mon Vector en ArrayCollection, mais c'est pas génial...