Результаты плагина Struts2 Convention с использованием наследования - PullRequest
5 голосов
/ 20 июля 2011

Есть ли способ заставить плагин конвенций struts2 использовать результаты суперкласса?

Я пытаюсь создать общий CRUD и использовать общие результаты, если в дочернем классе нет реализации. Это возможно?

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Да, вы можете.

Для примера:

Общий CRUD

@Results({
        @Result(name = "input", location = "input.jsp"),
        @Result(location = "input.jsp")
})
public abstract class CrudActionSupport extends ActionSupport {

    @Action("update/{entityId}") // wildcard mapping
    public String actionUpdate() {
        return SUCCESS;
    }
}

Действие

public class PersonAction extends CrudActionSupport {

}

Аннотация в CrudActionSupport будет действовать всегда, за исключением того, что она переопределяется в подклассе.

* * 1 022, например,
@Results({
        @Result(name = "input", location = "person.jsp"),
        @Result(location = "person.jsp")
})
public class PersonAction extends CrudActionSupport {

    @Override
    public String actionUpdate() {
        return SUCCESS;
    }

    // or 

    /*

    @Action("update/{id}")
    @Override
    public String actionUpdate() {
        return SUCCESS;
    }

    */
}
0 голосов
/ 21 июля 2011

Это не объект Struts2. Такое сооружение может быть построено, но есть и другие способы получения эффекта, который вы ищете.

В настоящее время я рекомендую использовать групповое сопоставление. Он может делать то, что вам нужно, и он будет хорошо работать с плагином соглашений (правила struts.xml имеют приоритет над соглашениями). Аннотации или xml, относящиеся к конкретному действию, имеют приоритет над групповым сопоставлением. Другими словами, это работает так, как вы ожидаете, просто попробуйте.

Что-то вроде этого на самом деле и является причиной для меня: диких карт. В любом случае конечный результат будет похож на то, что вы хотите сделать с суперклассами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...