> Tech > JavaServer Faces

JavaServer Faces

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

La spécification JSF est la plus récente des technologies couvertes dans cet article. Son annonce officielle remonte à mars 2004. A première vue, JSF se présente comme un concurrent de Struts. Et c’est curieux parce que l’un des leaders de la cospécification de JSF, Craig McClanahan, fur à l’origine de

Struts. Mais tandis que Struts est un cadre d’application Web, JSF est un cadre UI. Struts gère le flux d’une application depuis la page Web jusqu’à la logique de gestion ; JSF a été conçu pour traiter la portion UI d’une application. D’où le chevauchement entre Struts et JSF. Mais les fonctions UI de JSF dominent celles de Struts. N’en déduisez pas que vous ne pouvez pas utiliser à la fois Struts et JSF. En fait, Jakarta a en chantier un projet appelé Struts-Faces qui vise la fusion de ces deux technologies.

(Craig McClanahan est actuellement architecte au Sun Java Studio Creator – un concurrent de WDSc. Vous pouvez lire les commentaires de Craig sur JSF et Struts à blogs.sun.com/roller/page/craigmcc/20040927).

Comme JSTL et Struts, JSF a un ensemble de tags HTML. Mais JSF est bien plus qu’un simple ensemble de bibliothèques de tags. JSF a été conçu pour fournir des fonctions semblables au modèle piloté par événement des applications Windows. Tous les tags JSF ont des composantes UI correspondantes (comme des boîtes de texte, des boîtes de listes, des panneaux à onglets, et des grilles de données) auxquelles vous pouvez associer (ou lier, pour utiliser le terme JSF) des data beans et des processus de gestion frontaux. Le jeu de composants UI JSF est facilement extensible pour que vous puissiez obtenir un comportement d’UI personnalisé. L’architecture par composantes permet aux fournisseurs d’IDE de créer des outils WYSIWYG du type glisser/déposer semblables aux outils RAD (Rapid Application Development) de l’époque VisualBasic, PowerBuilder et Delphi.

Tout comme Struts, JSF a des fonctions de validation. Mais le code de validation JSF se trouve là où il doit être : dans le JSP, avec les tags validateurs. JSF est livré avec trois validateurs standard :

  • "< f :validatedoublerange>"
  • "< f:validatelength> "
  • "< f:validatelongrange>"

Mais il est aussi très facile d’écrire vos propres validateurs (vous trouverez aussi des validateurs personnalisés sur le Web). A l’instar de Struts, les messages d’erreur de validation sont codés dans des fichiers de propriétés et affichés avec des tags JSP.

Un sujet majeur du développement Struts était le coding du processus de présentation/validation/réaffichage. En fait, un ouvrage bien connu, Jakarta Pitfalls: Time-Saving Solutions for Struts Ant, JUnit and Cactus (John Wiley & Sons, 2003) consacre la plupart de ses chapitres à fournir des solutions aux problèmes de développement de Struts. Quoiqu’il en soit, JSF ne connaît aucun de ces problèmes. Des data beans sont associés aux composantes d’entrées par une fonction appelée value binding. (La figure 4 utilise value binding dans un champ de sortie.) Pendant le traitement JSF de la sortie sur formulaire, les valeurs data bean passent par des composantes appelées renderers, qui formatent les données sous forme de dates, monétaire, numérique simple ou autre. Pendant le traitement JSF de l’entrée sur formulaire, les valeurs liées passent par des composantes appelées converters, qui reformatent les données dans leur format data bean d’origine (String, Date, BifDecimal, par exemple). Là encore, vous pouvez créer facilement vos propres renderers et converters.

La configuration de JSF (qui est aussi semblable à celle de Struts) est codée dans un fichier XML et traitée par un contrôleur de servlets. Mais JSF introduit une fonction sophistiquée appelée managed beans. Les managed beans sont des JavaBeans maintenus par le contrôleur JSF. Ces beans font en principe deux choses : ils enveloppent les données affichées dans le HTML, et fournissent des méthodes pour traiter les données d’entrée par formulaire. Une méthode d’un managed bean peut être liée à une composante d’entrée JSF par la propriété action :

"<h:commandButton value="Process" action="#(entryHandler.process)"/>"

(Notons que JSF a un EL qui est semblable à JSTL. Le code JSF EL est facile à distinguer de JSTL EL parce que les expressions sont précédées d’un signe livre au lieu d’un signe dollar.)

Pour développer et déployer des applications JSF, il faut un serveur d’applications qui supporte JSP 1.2 et Servlet 2.3, et il faut aussi une implémentation de la spécification JSF. Actuellement il existe trois implémentations : l’implémentation de référence de Sun (à java.sun.com/j2ee/javaserverfaces), l’implémentation MyFaces open-source (myfaces. org) et celle d’IBM. A noter que l’implémentation d’IBM est intégrée dans WebSphere 5.1 mais que rien ne vous empêche d’utiliser l’implémentation Sun ou MyFaces avec WebSphere 5.0 (ou 5.1). Je dois cependant indiquer que le jeu d’outils visuels JSF WDSc peut utiliser des fonctions non disponibles dans l’implémentation Sun ou MyFaces.

Pour en savoir plus sur JSF, consultez les sources dans l’encadré Ressources JSF. Mais il est aussi très facile d’écrire vos propres validateurs (vous trouverez aussi des validateurs personnalisés sur le Web).

Téléchargez cette ressource

Les mégatendances cybersécurité et cyber protection 2024

Les mégatendances cybersécurité et cyber protection 2024

L'évolution du paysage des menaces et les conséquences sur votre infrastructure, vos outils de contrôles de sécurité IT existants. EPP, XDR, EDR, IA, découvrez la synthèse des conseils et recommandations à appliquer dans votre organisation.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010