2011-06-30 5 views
0

Ceci est une question de niveau de conception et j'ai besoin d'avis sur ce qui serait une meilleure approche.Intégration de Spring et Struts 2

L'application sur laquelle je travaille utilise Struts 2 et Spring (pour l'injection de dépendances). Chaque classe Action appelle la couche Service pour exécuter des fonctions métier. Toutes les données sont enregistrées dans les classes Model. Chaque action utilise des modaux pour enregistrer/éditer des données. Ces classes modales sont définies en tant que membres privés de la classe avec getter/setters.

Question 1) Faut-il définir les classes modales comme des beans dans le contexte de l'application? Actuellement je ne l'ai pas. Sur le formulaire submit, Struts crée lui-même l'instance. Lors de l'édition (quand je veux montrer des données à l'écran), je dois créer explicitement le modal (en utilisant new). Quelle serait la meilleure approche.

Question 2) Les haricots pour les classes d'action dans aplCntx doivent-ils être définis comme scope = "prototype"? Struts ne prend-il pas soin de créer de nouvelles instances de classes d'actions?

+0

Modal = Modèle ...? – leonbloy

+0

La classe de modèle supplémentaire est vraiment inutile. Parce que l'action s'inscrit dans un rôle de modèle dans MVC. – Chao

Répondre

1

1) Faut-il définir les classes modales comme des beans dans le contexte de l'application? Actuellement je ne l'ai pas. Sur le formulaire submit, Struts crée lui-même l'instance. Lors de l'édition (quand je veux montrer des données à l'écran), je dois créer explicitement le modal (en utilisant new). Quelle serait la meilleure approche.

Non Vous ne devez pas définir modal au printemps contexte, ils devraient être seulement POJO simples

+0

Vous voulez dire que nous ne devrions pas définir de modaux dans le contexte de l'application, mais plutôt créer une nouvelle instance quand nous en voulons une. Est-ce correct? –

+0

Exactement

3

Question 1:
Comme Jigar dit que vous n'avez pas besoin de définir vos champs d'action comme les haricots dans votre contexte d'application, car la plupart du temps, ils ne transportent que des données entre la page et votre application. Vous les avez probablement créés à partir de vos couches de service et vous souhaitez simplement les transmettre à la page pour présentation. Dans ce cas, struts2 prend en charge l'instanciation.

Question 2:
Il existe une fabrique d'objets dans struts2 qui s'occupe par défaut de la création d'actions. Vous pouvez changer cela et spécifier le printemps pour prendre soin de la création de l'action. Vous devez d'abord ajouter spring plugin for struts2 à votre classpath puis ajoutez cette ligne à votre fichier de configuration struts2:

<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory"/> 

Ensuite, vous créez des haricots pour vos actions comme:

<bean id="myActionBean" class="com.my.myAction" scope="prototype"> 
    ... required properties ... 
</bean> 

Rappelez-vous que vous devez définir la portée de prototype c'est comme ça que ça marche pour struts2. Puis dans votre fichier de configuration Struts:

<action name="myaAction" class="myActionBean"> 
    ... required result mapping ... 
</action>