Ajout de la gestion des événements

Voir aussi  

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-dessous afin d'atteindre la section qui vous intéresse :

Synchronisation de la navigation dans le contenu

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.

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.
  6. 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.

  7. Dans le concepteur visuel, sélectionnez le composant 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 ?.

Affichage d'un rapport à partir de la grille

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 :

Pour ajouter une méthode action à l'attribut actionListener
  1. Ouvrez le fichier contents.jsp. Cliquez à l'aide du bouton droit de la souris et sélectionnez Modifier le code de la page.
    Le fichier Contents.java s'ouvre.
  2. Ajoutez la déclaration de membre suivante à la classe Contents du fichier Contents.java  :
  3. String actionString = "";

  4. Ajoutez l'instruction d'importation suivante en début de fichier :
  5. import com.businessobjects.jsf.sdk.event.ItemClickedEvent;

  6. Enregistrez et fermez Contents.java.
  7. Dans la vue Propriétés du composant reportsList, cliquez sur l'onglet Edition rapide.
  8. Cliquez sur l'icône Action et saisissez la méthode suivante dans la zone de texte d'édition rapide :
  9.     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 = "";

            }

        }

  10. Enregistrez et fermez 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 = "";

}

Pour ajouter une méthode action à l'attribut action
  1. Dans la vue Propriétés du composant reportsList, cliquez sur l'onglet Edition rapide.
  2. Cliquez sur l'icône Commande et saisissez la méthode suivante dans la zone de texte d'édition rapide :
  3.     return actionString;

  4. Enregistrez 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/