2011-12-27 4 views
0

Il commence à se sentir redondant que je dois spécifier les paramètres doGet et ce qu'il lance à chaque fois. Existe-t-il un moyen de faire tout cela dans mon Controller afin qu'il ne doive pas être fait sur chaque page? Mon Controller n'a actuellement aucune doGet()Réduire le code redondant

@WebServlet(name = "EditServlet", urlPatterns = {"/content/edit"}) 
public class EditServlet extends cms.library.Controller { 
    @Override 
    public void doGet (HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

     this.loadView(new cms.library.PageConfig() 
       .setRequest(request) 
       .setResponse(response) 
       .setTemplate("/content/edit")); 
    } 

    @Override 
    public void doPost (HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

     System.out.println("posted"); 

     this.doGet(request, response); 
    } 
} 
+0

Vous ne savez pas ce que vous entendez par "ne pas avoir un' doGet' "puisqu'il y a un' doGet'. De plus, je ne suis pas sûr qu'il soit raisonnable d'assimiler les POST aux GET; ce serait presque certainement une erreur de la part du client de POST à ​​quelque chose qui n'est pas formel. –

Répondre

0

Vous pouvez passer dans le modèle à la classe cms.library.Controller de sorte que vous ne devez pas définir chaque doGet.

public class Controller { 
    private final String template; 
    public Controller(String template) { 
     this.template = template; 
    } 
    @Override 
    public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     this.loadView(new cms.library.PageConfig() 
       .setRequest(request) 
       .setResponse(response) 
       .setTemplate(template)); 
    } 
} 

@WebServlet(name = "EditServlet", urlPatterns = {"/content/edit"}) 
public class EditServlet extends cms.library.Controller { 
    public EditServlet() { 
     super("/content/edit"); 
    } 
    @Override 
    public void doPost (HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     System.out.println("posted"); 
     this.doGet(request, response); 
    } 
} 

Ou vous pouvez faire votre propre annotation et la classe Controller inspectaient la classe implémentant dans son constructeur pour l'annotation (au lieu de passer dans la chaîne).