La page contents.jsp affiche maintenant une liste de dossiers et d'états parmi lesquels il est possible de naviguer. Pour terminer la page, vous devez mettre en œuvre plusieurs fonctionnalités déterminant l'action à effectuer lorsque l'utilisateur clique sur les différentes parties de la page.
Cliquez sur l'un des liens ci
Dans la mesure où les composants path
et foldersList
sont liés au même bean EnterpriseItems
(représentant des dossiers), lorsque les utilisateurs cliquent sur un composant, l'autre est automatiquement mis à jour. Ainsi, le fait de cliquer sur un dossier dans le composant folderList
met à jour le chemin de navigation dans le composant path.
Toutefois, le composant reportsList
de la page est lié à un autre bean EnterpriseItem
(représentant des états). Lorsque les utilisateurs cliquent sur un dossier dans les composants path
ou foldersList
, les états contenus dans ce dossier doivent s'afficher dans le composant reportsList
. Pour pouvoir afficher les états, vous devez synchroniser les données EnterpriseItems
entre les composants.
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
.
Maintenant, le fait de cliquer sur le composant path
ou foldersList
met à jour le composant reportsList
. Pour en savoir plus, voir Comment synchroniser plusieurs composants ItemsGrid et Path liés à différents beans EnterpriseItems ?.
Vous souhaitez rediriger les utilisateurs qui cliquent sur un état dans le composant reportsList
vers la page view.jsp dans laquelle le rendu de l'état sera affiché. Cette action est signalée lors du déclenchement de l'événement ItemClicked
. Pour mettre en œuvre cette fonctionnalité, vous devez effectuer plusieurs procédures :
false
à l'attribut autoHandleEvents
du composant reportsList
.
Lorsque vous désactivez la gestion des événements par défaut, vous pouvez programmer le déclenchement d'un nouveau comportement lorsque les utilisateurs cliquent sur le grille.
actionListener
du composant reportsList
.
Cette méthode obtient les données de l'événement et vous autorise à définir pour l'ID d'élément du bean EnterpriseItem
(représentant un état unique), l'ID de l'état sur lequel l'utilisateur a cliqué dans le composant reportsList
.
Pour en savoir plus, voir Pour ajouter une méthode action à l'attribut actionListener.
action
du composant reportsList
.
Cette méthode renvoie une chaîne d'action. Cette chaîne d'action est utilisée par les règles de navigation dans le fichier faces
pour déterminer la destination de redirection des utilisateurs qui cliquent sur le composant reportsList
.
Pour en savoir plus, voir Pour ajouter une méthode action à l'attribut action.
faces-c onfig.xml
afin de rediriger les utilisateurs vers view.jsp.
Si vous avez suivi cette procédure de manière séquentielle, vous avez déjà ajouté cette règle de navigation. Voir Règle de navigation pour l'affichage d'un état pour en savoir plus.
Astuce : Vous pouvez également cliquer avec le bouton droit de la souris sur contents.jsp et sélectionner Modifier le code de la page.
import com.businessobjects.jsf.sdk.event.ItemClickedEvent;
Contents
:
String actionString = "";
Contents
:
public void doActionListener(ActionEvent event)
if (event instanceof ItemClickedEvent)
ItemClickedEvent currentEvent = (ItemClickedEvent) event;
String reportID = currentEvent.getEventArgs().getItemID();
getEnterpriseItem().setItemID(reportID);
int columnIndex = currentEvent.getEventArgs().getColumnIndex();
reportsList
dans le concepteur visuel.
#{pc_Contents.doActionListener}
pour l'attribut actionListener
.
Cette étape crée une méthode qui établit une liaison avec la méthode doActionListener
qui se trouve dans la classe de code de la page Contents.java (bean de sauvegarde).
La méthode doActionListener
vérifie si l'événement déclenché correspond à l'événement ItemClicked
qui indique qu'un utilisateur a cliqué sur un élément dans le composant reportsGrid
:
if (event instanceof ItemClickedEvent)
Si l'événement ItemClicked
a été déclenché par l'application, l'ID d'état de l'état sur lequel l'utilisateur a cliqué est extrait des données de l'événement :
ItemClickedEvent currentEvent = (ItemClickedEvent) event;
String reportID = currentEvent.getEventArgs().getItemID();
Cet ID d'état est ensuite attribué à la propriété ItemID
du bean EnterpriseItem
afin d'être utilisé comme source d'état pour le composant ReportPageViewer
sur la page suivante, view.jsp :
getEnterpriseItem().setItemID(reportID);
Pour finir, la méthode cherche à identifier la colonne du composant reportsGrid sur laquelle l'utilisateur a cliqué. Dans cette procédure, seul le titre de l'état (la première colonne) déclenche l'affichage de l'état par application. Si l'utilisateur clique sur une autre colonne, par exemple la description de l'état, aucune action ne se produit :
int columnIndex = currentEvent.getEventArgs().getColumnIndex();
Remarque : Contents.java peut alors être modifié.
Contents
:
reportsList
dans le concepteur visuel.
#{pc_Contents.viewReport}
pour l'attribut action
.
Cette étape crée une méthode qui établit une liaison avec la méthode viewReport
qui se trouve dans la classe de code de la page Contents.java (bean de sauvegarde).
Cette méthode renvoie la chaîne d'action définie par la méthode action de l'attribut actionListener
. Lorsque les utilisateurs cliquent sur le titre de l'état dans la première colonne du composant reportsList
, cette chaîne est définie sur "view_report".
Business Objects http://www.france.businessobjects.com/ Support technique http://www.businessobjects.com/services/support/ |