Могу ли я вызвать действие контроллера с POST-параметрами из другого контроллера в качестве метода?

У меня есть контроллер и некоторые действия внутри. Могу ли я вызывать эти действия как методы из другого контроллера, как если бы я вызывал это действие с параметрами сообщения?

Я использую плагин Grails PayPal, и у него есть действие под названием «купить». Я не хочу, чтобы пользователь отправлял данные о продукте и информацию о покупке. Я уже знаю, что пользователь хочет купить, и я хочу вызвать действие покупки в моем контроллере, как если бы я вызвал обычный метод, а затем я хочу перенаправить пользователя на PayPal (на URL-адрес действие покупки возвращается).

Я использую Grails 2.0 и новейший плагин PayPal.


person whitenexx    schedule 16.04.2012    source источник


Ответы (3)


Нет, ты не можешь. Вы можете указать от действия A к цепочке к действию B. Но это не вызов его как метода, это перенаправит вызов к действию B, вы больше не будете в области действия A.

Возможно, вы сможете реализовать свое действие в файле service. Затем вы можете вызывать его по своему усмотрению из действия вашего контроллера.

person Alexandre Bourlier    schedule 18.04.2012

Насколько мне известно, вы можете перенаправить свое действие на другое действие, принадлежащее другому контроллеру.

вы можете использовать метод перенаправления для этого.

"redirect(controller: 'abc', action: 'actionName', params: 'params')"
person sanghavi7    schedule 30.06.2012
comment
вы можете перенаправить на это действие после повторной обработки, вы можете перенаправить с этого. - person sanghavi7; 30.06.2012

Вы можете использовать chain(...).

Цепь:

Использует флэш-память для неявного сохранения модели после перенаправления HTTP с одного действия на другое.

person Colin Harrington    schedule 16.04.2012
comment
Если модель не нужно сохранять, я бы использовал forward вместо chain, так как он перенаправляется внутри, а не выполняет еще один круговой обход HTTP. - person ataylor; 17.04.2012
comment
Да, вперед - это следующий шаг :-) - person Colin Harrington; 17.04.2012
comment
Так что я могу сделать что-то вроде этого? PayPalController.buy (параметры) ? - person whitenexx; 17.04.2012