Я делаю первые шаги со Struts 2 и плагином struts2-convention, в настоящее время работаю над класс действий CRUD (SongCrudAction
) с некоторыми типичными методами действий create()
, edit()
, view()
и delete()
. Все эти методы помечены @Action
.
Как правило, я хотел бы унаследовать полезное поведение по умолчанию от ActionSupport
, но это также включает в себя наследование метода execute()
.
Используя браузер конфигурации, я вижу, что есть действие с именем song-crud
, указывающее на него. Это действие song-crud
устарело, и я хотел бы от него избавиться, так как у меня есть собственные методы действий для всех нужных операций. Я думаю, благодаря соглашениям Struts2 предполагается, что действие song-crud
, хотя я нигде его не объявлял.
В этом конкретном случае одним из возможных решений было бы придать разумное значение методу execute()
, например. Я мог бы использовать его для операции view()
. Недостатком было бы то, что класс действия должен быть переименован (или аннотирован?) в соответствии с поведением метода execute()
(например, ViewSongAction
вместо SongCrudAction
). В противном случае URL-адрес действия просмотра будет неуместным (например, /view-song?id=5
подойдет лучше, чем /song-crud?id=5
).
С другой стороны, переименование класса тоже было бы некрасиво, потому что это всего лишь CRUD, а не класс действий просмотра.
В любом случае, общая проблема остается: всякий раз, когда я наследую от ActionSupport
, он предоставляет мне метод execute()
, который может или не может быть полезен для того, что я делаю.
Итак, кажется разумным каким-то образом сообщить Struts 2, чтобы он в исключительных случаях забыл о методе execute()
в моем классе действий CRUD. Так ли это, и как я могу этого добиться? Есть ли лучшее решение?