2012-11-15 2 views

Répondre

0

Lorsque vous avez besoin de nombreuses actions similaires à la fève forme similaire dans le même module entretoises (par exemple des actions CRUD à createreadupdatedelete le même objet). Avec plaine Action vous aurez besoin 4 Struts fichiers d'action avec les importations, en-têtes, les signatures de méthode:

// CreateAction.java 
package com.example.package; 
// imports and header 
public class CreateAction extends Action { 
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
     HttpServletRequest request, HttpServletResponse response) { 
     // actual code 
    } 
} 

// ReadAction.java 
package com.example.package; 
// imports and header 
public class ReadAction extends Action { 
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
     HttpServletRequest request, HttpServletResponse response) { 
     // actual code 
    } 
} 

// UpdateAction.java 
package com.example.package; 
// imports and header 
public class UpdateAction extends Action { 
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
     HttpServletRequest request, HttpServletResponse response) { 
     // actual code 
    } 
} 

// DeleteAction.java 
package com.example.package; 
// imports and header 
public class DeleteAction extends Action { 
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
     HttpServletRequest request, HttpServletResponse response) { 
     // actual code 
    } 
} 

vous aurez également besoin 4 cartographies d'action en struts-config.xml (bien sûr, si vous ne l'utilisez annotations). Mais en fait, ils invoqueront simplement la couche de code suivante (manager/DAO/etc), indépendante du web (classes request/response/mapping) et donc testable avec des tests unitaires permettant le développement piloté par les tests et la réutilisabilité du code. Les quatre classes ne différeront que par 1-2 lignes de code. Le reste est passe-partout, répétant encore et encore. En ajoutant des paramètres supplémentaires ou en réutilisant un existant dans la requête HTTP (en d'autres termes: dans une étiquette de formulaire JSP), vous pouvez regrouper les 4 actions dans une classe, par ex. en EventDispatchAction:

// CRUDAction.java 
package com.example.package; 
// imports and header 
public class CRUDAction extends EventDispatchAction { 
    public ActionForward create(ActionMapping mapping, ActionForm form, 
     HttpServletRequest request, HttpServletResponse response) { 
     // actual code 
    } 

    public ActionForward read(ActionMapping mapping, ActionForm form, 
     HttpServletRequest request, HttpServletResponse response) { 
     // actual code 
    } 

    public ActionForward update(ActionMapping mapping, ActionForm form, 
     HttpServletRequest request, HttpServletResponse response) { 
     // actual code 
    } 

    public ActionForward delete(ActionMapping mapping, ActionForm form, 
     HttpServletRequest request, HttpServletResponse response) { 
     // actual code 
    } 
} 

Cela nécessite beaucoup moins de plaque. Pour indiquer quelle action vous souhaitez effectuer, vous pouvez utiliser les boutons de soumission:

<html:submit property="update" value="Save" /> 
<html:submit property="delete" value="Delete" /> 
Questions connexes