J'espère que dans cet article, je pourrai avoir l'opinion des gens sur les meilleures pratiques pour l'interface entre les pages JSF et les backing beans.
Une chose sur laquelle je ne pourrai jamais m'arrêter est la structure de mes backing beans. De plus, je n'ai jamais trouvé un bon article sur le sujet.
Quelles propriétés appartiennent à quels backing beans? Quand est-il approprié d'ajouter plus de propriétés à un bean donné plutôt que de créer un nouveau bean et d'y ajouter les propriétés? Pour les applications simples, est-il judicieux de n'avoir qu'un seul bean de support pour toute la page, compte tenu de la complexité de l'injection d'un bean dans un autre? Le bean de support doit-il contenir une logique métier réelle ou doit-il contenir strictement des données?
N'hésitez pas à répondre à ces questions et à toutes autres qui pourraient survenir.
En ce qui concerne la réduction du couplage entre la page JSF et le backing bean, je n'autorise jamais la page JSF à accéder aux propriétés des propriétés du backing bean. Par exemple, je n'autorise jamais quelque chose comme:
<h:outputText value="#{myBean.anObject.anObjectProperty}" />
J'ai toujours besoin de quelque chose comme:
<h:outputText value="#{myBean.theObjectProperty}" />
avec une valeur de backing bean de:
public String getTheObjectProperty()
{
return anObject.getAnObjectProperty();
}
Lorsque je boucle sur une collection, j'utilise une classe wrapper pour éviter d'explorer un objet dans une table de données, par exemple.
En général, cette approche me semble «juste». Il évite tout couplage entre la vue et les données. Corrigez-moi si j'ai tort, s'il-vous plait.