Уменьшить избыточный код - PullRequest
       7

Уменьшить избыточный код

0 голосов
/ 27 декабря 2011

Начинает чувствовать себя излишним, что мне приходится указывать параметры doGet и то, что он выдает каждый раз. Есть ли способ сделать все это в моем Controller, чтобы это не нужно было делать на каждой странице? Мой Controller в настоящее время не имеет doGet()

@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);
    }
}

1 Ответ

0 голосов
/ 28 декабря 2011

Вы можете передать шаблон в класс cms.library.Controller, чтобы вам не приходилось каждый раз определять 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);
    }
}

Или вы можете сделать свою собственную аннотацию, и класс Controller будет проверять реализующий класс в своем конструкторе на наличие аннотации (вместо передачи в строке).

...