27 votes

Dois-je utiliser l'attribut "jsfc" de Facelets?

Facelets utilise le jsfc attribut pour convertir les éléments HTML qui leur sont associées JSF composants. C'est plutôt utile pour le prototypage rapide car il vous permet de créer votre point de vue à l'aide d'un outil de conception visuelle. Cependant j'ai récemment découvert ce blog par Cay Horstmann , où il établit des déchets pour l'utilisation de jsfc ensemble avec des composants complexes tels que h:dataTable.

Cela m'alarmer comme Cay Horstmann est l'auteur de plusieurs de mes préférés Java livres. Cependant mon Google-fu compétences, ont abouti à des résultats nuls en essayant de déterminer la portée et la nature du problème, autre qu'un post récent, par Ed Burns, qui coutures comme jsfc (et il est, après tout, le co-spec lead pour JSF). Donc ma question est simple, est-il recommandé d'utiliser jsfc avec Facelets ? et si non, quel est le problème qu'il introduit.

27voto

romaintaz Points 32120

Comme vous l'avez dit, l' jsfc attribut est essentiellement utile lorsque vous avez à "convertir" un prototype HTML d'une page JSF. Par exemple, lorsque vous avez un HTML de saisie de texte:

<input type="text" .../>

vous pouvez ajouter l' jsfc attribut afin de convertir la version HTML de ce composant dans un composant JSF:

<input type="text" jsfc="h:inputText" .../>

C'est l'équivalent de l'écriture de la suite de JSF code:

<h:inputText .../>

Comme indiqué dans le Facelets documentation ici ou ici, l'attribut jsfc peut également être utilisé pour "carte" Facelets composants. Par exemple, vous pouvez supprimer une partie du code HTML:

<span jsfc="ui:remove">
This won't be compiled either <h:outputText value="#{foo.bar}"/>
</span>

Vous pouvez également créer une table à l'aide de cet attribut:

<table>
    <tr jsfc="ui:repeat" value="#{dept.employees}" var="emp" class="#{emp.manager ? 'mngr' : 'peon'}">
       <td>#{emp.lastName}</td>
       <td>#{emp.firstName}</td>
    </tr>
</table>

Dans cet exemple, nous n'avons pas de lien de ce tableau à un h:datatable , mais nous créons un tableau avec le code HTML, à l'aide du composant JSF ui:repeat pour itérer sur les lignes.

Comme vous pouvez le voir, l' jsfc attribut peut être utilisé pour convertir un composant HTML dans un composant JSF dans une page JSF. Donc pour les composants complexes, tels que la table de données, vous devez utiliser une des solutions de contournement (à l'aide d' ui:repeat , au lieu de l' h:datatable de la composante).

Un autre point est que vous ne serez pas en mesure d'utiliser des bibliothèques de composants tels que ceux proposés par RichFaces, IceFaces, Tomahawk, et ainsi de suite. Et ces bibliothèques sont vraiment l'un des intérêts de JSF.

Donc, pour résumer: jsfc peut être utile pour transformer un prototype HTML dans une applications JSF, essentiellement pour la création de la Preuve de Concepts ou de la conception générale de l'IU. Cependant, je pense qu'il est préférable d'éviter cette composante, une fois le "vrai" développement commence...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X