Должен ли / можно ли заставить соглашения Struts 2 забыть о методе execute() действия?

Я делаю свои первые шаги со Struts2 и struts2-convention-pluginВ настоящее время работает над классом действий CRUD (SongCrudAction) с некоторыми типичными create(), edit(), view() а также delete() методы действия. Все эти методы помечены @Action,

Как правило, я хотел бы унаследовать полезное поведение по умолчанию от ActionSupport, но это также включает наследование execute() метод. Используя браузер конфигурации, я вижу, что есть действие с именем song-crud указывая на это. Это действие песни без правил устарело, и я хотел бы от него избавиться, так как у меня есть свои собственные методы действий для всех желаемых операций. Я предполагаю, что благодаря соглашениям struts2 это действие песни-грубо предполагается, хотя я нигде не объявил это.

В этом конкретном случае одним из возможных решений было бы придание некоторого разумного значения execute() метод, например, я мог бы использовать его для операции просмотра. Недостатком было бы то, что класс действия затем должен быть переименован (или аннотирован?) В соответствии с execute() поведение метода (например, ViewSongAction вместо SongCrudAction). В противном случае URL-адрес действия просмотра будет неуместным (т.е. /view-song?id=5 будет соответствовать лучше, чем /song-crud?id=5). С другой стороны, переименование класса также будет уродливым, потому что это просто CRUD, а не класс действий представления.

В любом случае, общая проблема остается: всякий раз, когда я наследую от ActionSupport, это дарит мне execute() метод, который может или не может быть полезным для того, что я делаю.

Таким образом, кажется разумным как-то сказать Struts2 исключительно забыть о execute() метод в моем классе действий CRUD. Это правильно, и как я могу этого достичь? Есть ли лучшее решение?

1 ответ

Решение

execute метод будет запущен по умолчанию, если вы не укажете method атрибут в конфигурации действий. И если вы не используете DMI для запуска ваших методов. ActionSupport уже реализован execute метод, как это реализовано Action интерфейс Но примечание, которое появляется с восклицательным изображением ниже, выглядит действительно странно.

Если нет метода execute и нет другого метода, указанного в конфигурации, каркас выдаст исключение.

в любом случае это верно, наоборот, если у вас есть метод execute и другие методы, какой метод будет выполняться? Вы могли бы опустить method атрибут в конфигурации действия и использовать DMI для вызова любого метода в действии, включая execute метод, если метод не указан.

Другие вопросы по тегам