Comment synchroniser plusieurs composants ItemsGrid et Path liés à différents beans EnterpriseItems ?

Examinez les scénarios suivants : une page JSP unique contient deux composants ItemsGrid et un composant Path. Le composant Path, nommé path, et un des composants ItemsGrid nommé foldersGrid, sont tous deux liés au même bean EnterpriseItems nommé folders. Ce bean EnterpriseItems représente une hiérarchie de dossiers dans le système Crystal Enterprise que l'utilisateur peut parcourir en utilisant path et foldersGrid. Les deux composants étant liés au même bean EnterpriseItems, ils sont synchronisés automatiquement de sorte que lorsque l'utilisateur navigue avec un composant, l'autre composant reflète les modifications.

Toutefois, le second composant ItemsGrid, nommé reportsList, est lié à un second bean EnterpriseItems nommé reports qui représente un ensemble d'états Crystal dans un dossier donné. Comment faire en sorte que reportsList fonctionne avec les autres composants de la page ? La solution consiste à synchroniser les composants dans l'ordre approprié.

Pour que le second composant ItemsGrid, reportsList, fonctionne avec les autres composants de manière transparente dans la page, les composants doivent être synchronisés de sorte que, lorsque l'utilisateur navigue vers un certain niveau dans la hiérarchie des dossiers dans foldersList ou path, reportsList affiche les états présents à ce même niveau. Par exemple, la propriété parentItemID du bean reports de EnterpriseItems doit avoir pour valeur la valeur actuelle de la propriété parentItemID du bean folders chaque fois que l'utilisateur clique sur un dossier dans la grille des dossiers ou sur le composant Path. Le résultat étant que la grille des états affiche toujours le même niveau d'information. Pour permettre cette coordination entre composants, vous devez définir la synchronisation pour le composant foldersList et pour le composant path.

Pour synchroniser les composants
  1. Dans le concepteur visuel, sélectionnez le composant path.
  2. Dans la vue Propriétés, cliquez sur l'onglet Synchronisation.
  3. Cliquez sur Synchroniser avec les composants suivants puis sur Ajouter.
  4. Dans la boîte de dialogue Sélection d'un composant à synchroniser, sélectionnez le composant reportsList afin de le synchroniser avec le composant actuel.
  5. Cliquez sur OK.

    Remarque :    Si vous tentez de synchroniser avec un composant lié au même bean EnterpriseItems que d'autres composants, un message vous indique que plusieurs composants ont la même valeur de propriété itemSource (le bean EnterpriseItems), et que si vous ajoutez la synchronisation pour le composant sélectionné, elle sera également ajoutée pour tous les composants liés à ce bean. Cliquez sur OK pour confirmer la synchronisation.

  6. Dans le concepteur visuel, sélectionnez le composant foldersList et répétez les étapes 2 à 5 pour synchroniser avec le composant reportsList.

L'action de synchronisation ajoute deux éléments de code importants à l'application. Premièrement, une écoute d'actions est ajoutée aux composants foldersList et path :

actionListener="#{pc_<nameofpage>.doAction}"

En outre, dans la classe java code-behind de la page (créée par RAD et généralement nommée <nomdelapage>.java), la méthode action event handler est ajoutée pour effectuer la synchronisation :

public void doAction() {

    reports.setParentItemID(folders.getParentItemID());

}

Comme vous pouvez le constater, l'ordre de synchronisation est important. Dans notre exemple, nous avons synchronisé foldersList sur reportsList et path sur reportsList. Ainsi, lorsque l'utilisateur clique sur foldersList ou sur path, reportsList est synchronisé. Toutefois, l'inverse n'est pas vrai. reportsList n'a pas été synchronisé sur foldersList, par conséquent, les actions effectuées dans reportsList n'affectent pas foldersList. Lorsque vous décidez des composants à sélectionner et sur lesquels effectuer la synchronisation, gardez à l'esprit le comportement que vous souhaitez obtenir de votre application.


Business Objects
http://www.france.businessobjects.com/
Support technique
http://www.businessobjects.com/services/support/