JavaServer Faces (suite) Il ne s'agit pas d'une balise HTML ou JSP, mais d'un objet sur lequel l'utilisateur clique pour déclencher le comportement associé. Pour interpréter les interactions utilisateur avec les composants de la logique métier, les développeurs peuvent se servir de processus d'écoute (listeners). L'infrastructure JSF gère le reste. Ainsi, le développement d'applications JSF revient davantage à concevoir une interface graphique et à associer une logique métier à des composants qu'à programmer avec des API de bas niveau. Par ailleurs, la technologie JSF permet de synchroniser les composants d'interface graphique automatiquement avec des backing beans, objets java qui collectent les entrées utilisateur et répondent aux événements. Elle peut être utilisée avec divers clients. La spécification JSF intègre des fonctions de prise en charge des outils. La norme JSR-276 (Design Time Metadata for JSF Components, http://www.jcp.org/en/jsr/detail?id=276) a pour objectif de garantir que les composants des différents fournisseurs s'affichent correctement dans les environnements IDE qui prennent en charge JSF. Etant donné que l'environnement JSF de composants d'interface graphique utilise des outils et s'exécute au sein de conteneurs, il est très prisé des programmeurs de tous types et il est très largement pris en charge dans l'industrie informatique. Vous trouverez des informations supplémentaires sur JSF sur de nombreux sites Web, tels que http://myfaces.apache.org et http://java.sun.com/javaee/javaserverfaces. Oracle Fusion Middleware 11g : Développer des applications avec ADF I 10 - 7 Concepts clés de JSF JSF fait appel à plusieurs concepts clés : • Composant d'interface graphique : Bouton, table de données, onglet de menu. • Contrôleur : Règles de navigation qui définissent la façon dont l'utilisateur progresse dans l'application. • Managed bean : Mode de spécification de la logique métier et des données. Dans les applications basées sur des composants métier ADF, la logique métier et les données sont généralement définies dans le modèle de composant métier ADF, et les propriétés de composant dans la couche de liaison ADF. • Backing bean : Mode de spécification des propriétés d'un composant. • Langage d'expressions : Liaison des données et des méthodes à des composants d'interface graphique. (Ce langage est présenté dans le chapitre "Lier des composants d'interface graphique aux données".) • Cycle de vie : Comportement de l'application lors de l'exécution. Oracle Fusion Middleware 11g : Développer des applications avec ADF I 10 - 8 Définir la navigation à l'aide du contrôleur JSF Dans JavaServer Faces (JSF), la navigation entre les pages d'application n'est pas codée en dur dans le fichier. Elle est définie par un ensemble de règles définies de façon centralisée dans le fichier faces-config.xml. Les règles de navigation déterminent la page qui apparaît lorsqu'un utilisateur clique sur un composant de navigation, tel qu'un bouton ou un hyperlien. Une règle de navigation définit la navigation d'une page vers une ou plusieurs autres pages. Chaque règle de navigation peut être associée à un ou plusieurs cas. Ces derniers définissent où un utilisateur peut se rendre à partir d'une page donnée. Par exemple, si une page contient des liens vers plusieurs autres pages dans l'application, vous pouvez créer une seule règle de navigation pour cette page et un cas de navigation pour chacun des liens. La règle elle-même permet de définir la navigation à partir des éléments suivants : • Une page JSF précise. • Toutes les pages dont les chemins suivent un modèle défini, par exemple, toutes les pages incluses dans un même répertoire. On parle alors de règle basée sur un modèle. • Toutes les pages d'une application Web Java EE. On parle alors de règle globale de navigation. Oracle Fusion Middleware 11g : Développer des applications avec ADF I 10 - 9 Navigation JSF : Exemple Les managed beans, abordés ultérieurement dans ce chapitre, sont des classes Java gérées dans le fichier de configuration faces-config.xml. Dans l'exemple ci-dessous, le code de la classe de managed bean détermine la valeur qui est renvoyée, puis utilisée par le cas de navigation. public class MyBean { public MyBean() {} public String navAction() { if (<check some condition>) { return "success"; } else { return "failure"; } } } Oracle Fusion Middleware 11g : Développer des applications avec ADF I 10 - 10 Utiliser les managed beans JSF Les composants JSF sont un type de composant JavaBean. Ils sont également conçus pour être utilisés avec des composants JavaBean d'un autre type, les managed beans. Souvent, les managed beans gèrent les événements ou les manipulations de données pour lesquels il est plus efficace d'effectuer un traitement frontal que de placer la logique dans un composant métier. Toutefois, l'ensemble des traitements et données d'application doivent être gérés par une logique située dans la couche métier de l'application. Exemples d'utilisations typiques des managed beans : • Ils permettent de stocker des valeurs utilisables par plusieurs pages. • Ils permettent d'exécuter une méthode en réponse à une interaction utilisateur, comme un clic sur un bouton. • Ils permettent d'exécuter une méthode lorsqu'un événement d'interface graphique, tel qu'un changement de valeur, a lieu. Les backing beans sont un type de managed bean spécialisé qui affiche tout ou partie des composants d'interface graphique d'une page en définissant des méthodes d'accès (accessors). Lorsque vous créez une page JSF, la section Page Implementation de la boîte de dialogue Create JSF Page vous permet d'indiquer si les composants d'interface graphique doivent être affichés. Cette opération n'est nécessaire que si la page nécessite du code spécial en vue de la manipulation de ses composants par programmation. Par exemple, vous pouvez définir une condition contrôlant l'affichage d'un composant. Si vous décidez d'afficher les composants d'un managed bean, JDeveloper ajoute automatiquement des passerelles (stubs) pour les méthodes d'accès au fur et à mesure que vous ajoutez des composants à la page. Les backing beans sont directement associés aux pages, contrairement à d'autres types de managed bean auxquels plusieurs pages peuvent accéder simultanément. Oracle Fusion Middleware 11g : Développer des applications avec ADF I 10 - 11 Utiliser le contrôleur ADF Le contrôleur ADF (ADF Controller) est un modèle de navigation et de gestion des états amélioré basé sur JavaServer Faces. Il permet de décrire les flux de page de façon déclarative. Les flux de page peuvent être encapsulés dans un flux de tâches, ce qui facilite la réutilisation. Les flux de tâches représentent des activités, ainsi que les règles de flux de contrôle qui définissent les transitions entre les activités. Utilisée seule, la navigation JSF ne propose pas ce concept de flux de tâches. Outre la navigation, le contrôleur ADF offre la possibilité d'appeler des méthodes, pour des managed beans ou d'autres objets Java. Il prend en charge des tâches d'application telles que la validation, la gestion des états, la sécurité et le contrôle déclaratif des transactions. Le contrôleur ADF permet également de contrôler le comportement lorsque la navigation résulte d'un clic sur le bouton Back. Vous en apprendrez plus sur les fonctionnalités du contrôleur ADF dans des chapitres ultérieurs. Oracle Fusion Middleware 11g : Développer des applications avec ADF I 10 - 12