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
.
path
.
reportsList
afin de le synchroniser avec le composant actuel.
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.
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
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/ |