4

A mesure que la complexité des projets Web sur lesquels je travaille augmente, la nécessité d'inclure une structure MVC devient plus urgente. Mes classes de modèles sont bien définies, mais le code de vue et de contrôleur a tendance à se confondre. J'ai utilisé AJAX assez lourd sur le site aussi (RichFaces jsFunctions surtout) ce qui rend les choses un peu plus compliquées.Meilleure pratique pour implémenter MVC dans les beans gérés JSF2

Est-ce que quelqu'un a trouvé de bonnes stratégies pour implémenter MVC en utilisant JSF2? Je ne veux pas introduire un autre cadre pour le projet (par exemple Spring MVC).

Quelques idées à ce jour, que je ne l'ai pas commencé à faire encore

  • Pour une page avec de lourdes ajax, ont un haricot « vue » pour se souvenir des onglets sélectionnés, les éléments sélectionnés, fournissant des listes filtrées de données, etc ...
  • Avoir un bean 'controller' pour gérer les actions telles que les changements au modèle
  • Avoir des beans 'command' qui vont entre la page JSF et le contrôleur. Une fonction jsFunction remplit le bean de commande avec des paramètres et l'appel command.execute() fait que la commande bean appelle la méthode correcte sur le bean contrôleur pour effectuer l'action. Le bean 'command' peut inclure du javascript pour être appelé à la fin. Il peut également spécifier les régions de la page à rendre.

Des pensées?

Modifier

Ce que je vois assez souvent les haricots sont gérés qui ont tendance à tout faire: garder une trace des sélections des utilisateurs, mettre à jour le modèle, obtenir des listes filtrées, etc ...

Nous utilisons JSF 1.2 pour le moment et nous ne pouvons donc pas utiliser actions/actionlisteners avec des paramètres. Ainsi, par exemple, nos beans gérés contiennent des variables telles que m_selectedDate dont le seul but est d'alimenter la date sélectionnée en back-end sur l'appel à updateFilteredItemsBasedOnDate(). Ce serait bien si les variables supplémentaires pouvaient disparaître car elles sont temporaires. JSF 2 EL avec des paramètres devrait aider, mais je suis curieux de savoir s'il existe une solution de rechange disponible. Je suis curieux de savoir s'il existe un moyen d'appliquer MVC aux beans gérés, ou une méthode de séparation des soucis afin que nous ne nous retrouvions pas avec de gros haricots qui essaient de tout faire.

+0

Je ne vois pas le point de "Comment puis-je MVC avec JSF?". JSF lui-même est déjà un framework MVC (2). Les haricots gérés sont le M, les pages des facelets sont les V, le 'FacesServlet 'intégré est le C. Votre question n'est-elle pas plutôt" Comment puis-je concevoir les beans gérés dans JSF? ". – BalusC

+0

Bon point. J'ai mis à jour le titre de la question et ajouté quelques commentaires. –

+0

D'autres pensées? –

Répondre

0

Vous devez voir la meilleure façon de gérer les haricots regarder plutôt sur la façon dont mieux utiliser la MVC dans JSF. Parce que JSF lui-même vient avec le MVC dans une meilleure implémentation. Je ne suis pas sûr de ce que vous entendez exactement ici comme la meilleure façon de mettre en œuvre le MVC. Comme Balusc dit dans les commentaires, JSF lui-même a le MVC suffisant pour votre application. Peut-être que si vous souhaitez séparer les préoccupations, il est judicieux de séparer la logique métier en classes Helper et d'écrire uniquement la logique de présentation dans les beans.

Il existe un débat sur l'utilisation du bean pour la logique métier ou sur sa séparation avec le bean géré. Tout dépend de votre application et de votre domaine spécifique.

Merci, Krishna

1

Eh bien, peut-être ce que vous avez besoin est une architecture en couches. Jusqu'à présent, une architecture MVC, il y a plus de préoccupations. Par exemple, vous pouvez superposer votre architecture dans les couches View, Business Logic et DataAccess, en implémentant la plupart des modèles de conception et d'entreprise dans chaque couche.

Vous h've commencé Whit un d'entre eux la mise en œuvre MVC, mais, est une bonne pratique prendre du nombre « séparation des préoccupations »

De cette façon, vous pouvez obtenir un bien organisé et le code découplé.

J'espère que cette brève explication a été utile.

Cordialement.