J'espère que dans ce post, je pourrai obtenir l'avis des gens sur les meilleures pratiques pour l'interface entre les pages JSF et les backing beans.
Une chose que je n'arrive jamais à régler, c'est la structure de mes haricots de soutien. 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 des 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 sauvegarde pour toute la page, compte tenu de la complexité de l'injection d'un bean dans un autre ? Le backing bean doit-il contenir une véritable logique métier ou uniquement des données ?
N'hésitez pas à répondre à ces questions et à toute autre question qui pourrait vous être posée.
En ce qui concerne la réduction du couplage entre la page JSF et le backing bean, je ne permets jamais à la page JSF d'accéder aux propriétés du backing bean. Par exemple, je n'autorise jamais quelque chose comme :
<h:outputText value="#{myBean.anObject.anObjectProperty}" />
Je demande toujours 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 enveloppe pour éviter d'avoir à forer dans un objet d'une table de données, par exemple.
En général, cette approche me semble "juste". Elle évite tout couplage entre la vue et les données. Veuillez me corriger si je me trompe.