Ajout de la gestion des événements

Voir aussi  

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

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.

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 état à partir de la grille

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 :

Pour ajouter une méthode action à l'attribut actionListener
  1. Dans la vue de l'Explorateur de projet, développez le nœud Projets Web dynamiques, puis, sous votre projet Web, déplacez-vous jusqu'à Ressources Java > JavaSource > pagecode.
  2. Cliquez deux fois sur Contents.java pour ouvrir le fichier et le modifier.

    Astuce :    Vous pouvez également cliquer avec le bouton droit de la souris sur contents.jsp et sélectionner Modifier le code de la page.

  3. Ajoutez l'instruction d'importation suivante en haut du fichier, sous les autres instructions d'importation :

    import com.businessobjects.jsf.sdk.event.ItemClickedEvent;

  4. Ajoutez la déclaration de membre suivante à la classe Contents :

    String actionString = "";

  5. Ajoutez la méthode suivante à la classe 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();

            if (columnIndex == 0)

            {

                actionString = "view_report";

            }

            else

            {

                actionString = "";

            }

        }

    }

  6. Enregistrez et fermez Contents.java.
  7. Ouvrez contents.jsp et sélectionnez le composant reportsList dans le concepteur visuel.
  8. Dans la vue Propriétés, indiquez #{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();

if (columnIndex == 1)

{

    actionString = "view_report";

}

else

{

    actionString = "";

}

Pour ajouter une méthode action à l'attribut action
  1. Cliquez avec le bouton droit de la souris sur contents.jsp et choisissez Modifier le code de la page.

    Remarque :    Contents.java peut alors être modifié.

  2. Ajoutez la méthode suivante à la classe Contents :

    public String viewReport()

    {

        return actionString;

    }

  3. Enregistrez et fermez Contents.java.
  4. Ouvrez contents.jsp et sélectionnez le composant reportsList dans le concepteur visuel.
  5. Dans la vue Propriétés, indiquez #{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/