Обработка сотен действий в Struts2 - PullRequest
1 голос
/ 22 марта 2010

Я унаследовал веб-приложение Struts 1, в котором для уменьшения количества классов Action (я думаю, это и есть причина) множество действий отображается в одном классе Action, например:

public XXXAction() throws Exception{
     actions = new Hashtable();
     actions.put("/XXX/main/load", new Integer(0));
     actions.put("/XXX/main/save", new Integer(1));
            ......
}

public ActionForward executeAction(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException
{
try
    {
        switch (((Integer) actions.get(action)).intValue())
        {
         case 0:
          loadXXXMain();
          break;
            case 1:
        .......

и т. Д. (В некоторых классах действий у меня есть почти сто таких маленьких действий).

Теперь я смотрю на миграцию на struts2, и я хотел бы иметь более чистое и лучшее решение для этого, возможно, без единого класса Action для каждого из этих небольших классов. Что ты предлагаешь? Мне не нравится это решение, но мне не нравятся сотни классов Action ....

Спасибо! Roberto

Ответы [ 2 ]

2 голосов
/ 22 марта 2010

Вы можете отобразить один класс Action в несколько URL-адресов, каждый из которых обрабатывается различным методом класса.Ознакомьтесь с документацией Struts2 здесь .Обычно я использую для сопоставления одного URL-адреса один класс Action, но я думаю, что вы также можете сгруппировать некоторые URL-адреса вместе, если они связаны с одной концепцией домена (например, CRUD).

0 голосов
/ 22 марта 2010

Похоже, у вас в руках значительный рефакторинг. Я согласен с тем, что сотни мелкозернистых действий не кажутся хорошим решением.

Начните писать модульные тесты, прежде чем начать. Может быть, Селен может помочь вам здесь.

...