En effet les objets Bean (Hibernate) et les ActionForm doivent etre distingue
car sinon tu crees un fort couplage a Struts pour tes acces aux donnees. Imagine qu'une application SWING veuille utiliser tes requetes Hibernates, l'application SWING devra inclure les librairies Struts (pour les ActionForm). De plus tu creer un fort couplage avec ton cas d'utilisation. Tu peux avoir un formulaire qui gère un utilisateur et un formulaire qui gere un utilisateur+roles.
C'est à la couche service (je ne vais pas t'embrouiller avec ca) qui est appele dans l'Action qui doit faire l'assemblage Bean->Form et Form->Bean, autrement dit recuperer tes Bean Hibernate et mettre à jour le formulaire et inversement.
Une ActionForm est une classse qui definit ton formulaire, autrement dit les champs saisissables par l'utilisateur. Si dans ton cas, tu dois afficher tes commentaires sans qu'il soit saisissable, tu mets dans ta request la liste des Comment et tu l'utilises ensuite dans ta JSP (tu n'a pas besoin de creer de CommentForm).
Maintenant si tu veux que les commentaires (mon exemple suppose que tu as un libelle sur le commentaire) soient saisissable tu creer un getter
dans ta TaskForm qui contient un tableau de String.
String[] getCommentsLabel();
Ce getter doit etre mis a jour dans ton load de ton action a l'aide des libelles des commentaires recupere d'Hibernate. Lorsque tu sauves ton formuliares tu recuperes les libelles de commentaires et tu construit ta liste des Bean Comment a laide de ce tableau de String.
Si tu veux j'ai fait un schema de l'architecture que j'ai l'habitude d'utiliser en Struts Hibernate (et Spring). Peut etre que ca t'aidera a voir plus clair.
Angelo
Partager