Должен ли / можно ли заставить соглашения 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
метод, если метод не указан.