Вопрос

Я использую MVC-фреймворк, который немного похож на Struts. Итак, скажем, у меня есть "Редактировать магазин" ссылка в моем приложении, вот как будет выглядеть URL:

http: // localhost: 9080 / test? action = editStore & amp; storeNum = 10

Теперь действие определяет мое действие (аналогично действию Struts) для запуска. Соответствующее действие здесь: EditStoreAction. Нажатие на это откроет всплывающее окно с различными атрибутами магазина для редактирования.

Мой вопрос здесь: Как мне написать свои действия? Я пишу два действия в этом контексте? <Ол>

  • EditStoreAction, который будет отображать edit.jsp
  • StoreSaveAction, который     будет вызвано, когда пользователь нажимает     принять по предоставленному ответу     edit.jsp.
  • ИЛИ Я просто пишу одно действие? EditStoreAction и отправить форму на одно и то же действие, я бы знал, что пользователь нажал кнопку «Принять» для внесения изменений при отправке. Таким образом, я выполнял бы другой поток в действии, который сохранял бы обновления в базе данных и перенаправлял на страницу сравнения.

    Какая самая лучшая практика здесь? Создать как можно больше действий, потому что он сохраняет код модульным? ИЛИ просто написать одно действие для обработки всего в JSP?

    Я знаю, что этот вопрос звучит немного тривиально, однако иногда вы просто хотите все сделать правильно. Отсюда и вопрос. Ценю вашу помощь.

    Это было полезно?

    Решение

    Идея состоит в том, чтобы, подобно Spring MVC, отобразить ваши действия на методы определенного класса, скажем, контроллера.

    Итак, в вашем случае эти два действия будут сопоставлены двум разным методам одного и того же класса. Вы можете вызвать класс StoreFormController и два метода: editStore () и saveStore () .

    Еще лучше, если вы создадите два контроллера для каждой сущности. Может быть один для всех запросов GET, а другой для запросов POST. Таким образом, в вашем случае было бы два контроллера StoreController для всех других запросов и StoreFormController для всех отправленных форм, а именно почтовых запросов. Теперь ваше первое действие GET перейдет к методу editStore () StoreController , тогда как второе POST-запрос перейдет к saveStore () метод StoreFormController . Вы можете определить столько методов, сколько необходимо в любом из этих двух классов в зависимости от типа запроса.

    Вы можете легко увидеть, откуда я, если знаете API Spring MVC.

    Другие советы

    Мне нравится использовать класс Struts DispatchAction, поскольку я могу определить более одного метода в классе действия (метод " execute "). За кулисами все, что он делает, - это находит метод, который он должен выполнить (передается в форме или передается в URL), находит метод с использованием отражения, вызывает его с правильным набором аргументов (метод должен иметь то же самое подпись метода «execute», получает результат и передает его. DispatchAction просто переопределяет «выполнить» метод класса Action для реализации этого поведения.

    При этом в вашем случае я бы определил только один класс - скажем, «DispatchStoreAction», и я бы определил два метода, вероятно, «подготовить». и " сохранить " ;. Мне нравится делать это таким образом, потому что у меня все еще есть хорошая абстракция класса (и вы не ставите «действие», вы выполняете в имени класса), потому что ваши методы могут четко определить, что они должны делать, и также потому что, по определению, классы действия имеют тенденцию быть маленькими У вас, вероятно, будет «StoreLogic» или " StoreBusiness " где-то определен, и этот класс будет обрабатывать бизнес-логику, связанную с сущностью, над которой вы работаете. Лично я думаю, что было бы хорошо, если у вас есть одна «StoreAction» а затем один «StoreLogic», один «UserAction» и один «UserLogic» и так далее - отношения не должны быть 1 к 1, но я думаю, что это помогает поддерживать код.

    Проверьте исходный код класса DispatchAction, чтобы узнать, как это сделать, но реализация должна быть тривиальной.

    scroll top