La page contents.jsp affiche maintenant une liste de dossiers et de rapports 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 rapports). Lorsque les utilisateurs cliquent sur un dossier dans les composants path
ou foldersList
, les rapports contenus dans ce dossier doivent s'afficher dans le composant reportsList
. Pour pouvoir afficher les rapports, 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 rapport dans le composant reportsList
vers la page view.jsp dans laquelle le rendu du rapport 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 :
reportsList
, décochez la case autoHandleEvents
.
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 rapport unique), l'ID du rapport 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.
Si vous avez suivi ce tutoriel de manière séquentielle, vous avez déjà ajouté cette règle de navigation. Voir Ajout de règles de navigation pour en savoir plus.
contents.jsp.
Cliquez à l'aide du bouton droit de la souris et sélectionnez Modifier le code de la page.Contents
du fichier Contents.java
:String actionString = "";
import com.businessobjects.jsf.sdk.event.ItemClickedEvent;
Contents.java.
reportsList
, cliquez sur l'onglet Edition rapide.if (event instanceof ItemClickedEvent)
{
ItemClickedEvent currentEvent = (ItemClickedEvent) event;
String reportID = currentEvent.getEventArgs().getItemID();
getEnterpriseItem().setItemID(reportID);
int columnIndex = currentEvent.getEventArgs().getColumnIndex();
if (columnIndex == 0)
{
actionString = "view_report";
}
else
{
actionString = "";
}
}
contents.jsp.
La méthode action 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
: Si l'événement ItemClicked
a été déclenché par l'application, l'ID du rapport 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 de rapport est ensuite attribué à la propriété ItemID
du bean EnterpriseItem
afin d'être utilisé comme source de rapport 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 ce tutoriel, seul le titre du rapport (la première colonne) déclenche l'affichage du rapport par l'application. Si l'utilisateur clique sur une autre colonne, par exemple la description du rapport, aucune action ne se produit :
int columnIndex = currentEvent.getEventArgs().getColumnIndex();
if (columnIndex == 1)
{
actionString = "view_report";
}
else
{
actionString = "";
}
reportsList
, cliquez sur l'onglet Edition rapide.return actionString;
contents.jsp
.Cette méthode renvoie la chaîne d'action définie par la méthode action. Lorsque les utilisateurs cliquent sur le titre du rapport dans la première colonne du composant reportsList
, cette chaîne est définie sur "view_report".
import com.businessobjects.jsf.sdk.event.ItemClickedEvent;
String actionString = "";
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();
if (columnIndex == 0)
{
actionString = "view_report";
}
else
{
actionString = "";
}
}
}
if (event instanceof ItemClickedEvent)
ItemClickedEvent currentEvent = (ItemClickedEvent) event;
String reportID = currentEvent.getEventArgs().getItemID();
getEnterpriseItem().setItemID(reportID);
int columnIndex = currentEvent.getEventArgs().getColumnIndex();
if (columnIndex == 1)
{
actionString = "view_report";
}
else
{
actionString = "";
}
public String viewReport()
{
return actionString;
}
Business Objects http://www.france.businessobjects.com/ Support technique http://www.businessobjects.com/services/support/ |