Existe-t-il un moyen de mapper une balise flex avec des composants de plusieurs annuaires?
-
03-07-2019 - |
Question
Étant donné une application ou un module flex, vous pouvez spécifier un espace de nom XML personnalisé comme suit:
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:custom="custom.namespace.*">
Nous pouvons ensuite faire référence aux composants mxml dans le répertoire custom / namespace / en utilisant la balise custom. Par exemple, si j'ai les composants Custom1 et Custom2 dans le répertoire custom / namespace, je peux les utiliser comme suit:
<custom:Custom1/>
<custom:Custom2/>
Existe-t-il un moyen de mapper plusieurs répertoires sur la même balise? Autrement dit, si j'ai des composants dans un sous-répertoire de custom / namespace, tel que custom / namespace / sub avec le composant SubCustom1, existe-t-il un moyen de modifier le document flex afin que la balise personnalisée puisse faire référence à SubCustom1?
Notez qu'une solution de contournement que j'ai trouvée consistait à ajouter une nouvelle balise à chaque répertoire (par exemple, xmlns: custom.sub = "custom.namespace.sub. *", puis:
<custom.sub:SubCustom1>
Cependant, cette solution semble être un kludge.
La solution
Pour créer un espace de nom personnalisé dans flex, vous devez
1) Créez un fichier manifeste personnalisé, par exemple
.<?xml version="1.0" encoding="utf-8" ?>
<componentPackage>
<component id="Accordion" class="mx.containers.Accordion"/>
....
2) Ajoutez quelque chose de similaire au suivant dans votre fichier flex-compiler.xml:
<compiler>
...
<namespaces>
<!-- Specify a URI to associate with a manifest of components for use as MXML -->
<!-- elements. -->
<namespace>
<uri>http://mycustomnamespace.com</uri>
<manifest>custom-manifest.xml</manifest>
</namespace>
</namespaces>
</compiler>
Vous pouvez lire une explication plus détaillée ici .
Cette question a également été répondue ici .
Autres conseils
La dénomination découle directement de la spécification XML pour les espaces de nom. Si vous souhaitez modifier custom
pour faire référence au sous-répertoire, modifiez la déclaration d'espace de noms:
xmlns:custom="custom.namespace.*"
à
xmlns:custom="custom.namespace.sub.*"