Область применения переменных формы в Grails - PullRequest
0 голосов
/ 20 сентября 2010

Я создаю приложение Grails, у которого есть страница ввода с текстовыми полями. Здесь пользователь может ввести данные и после отправки управление переходит к действию в контроллере. Здесь я получаю значение данных формы, используя params.empName и т. Д.

Но объем этих данных очень мал и не переносится, если я перенаправляю текущее действие на другое действие.

Есть ли способ увеличить область видимости переменных?

Теперь я хочу преобразовать это в сервис-ориентированную архитектуру. Следовательно, есть ли способ получить доступ к этим данным и в сервисе?

Пожалуйста, совет.

Спасибо, Megs

Ответы [ 3 ]

0 голосов
/ 20 сентября 2010

Я не думаю, что есть встроенный способ увеличения масштаба. Это, вероятно, хорошая вещь.

Если вы перенаправляете в контроллерах, вам нужно просто передать необходимые параметры через динамическое свойство redirect() params . Пример:

def formHandler = {
    // do stuff with params
    redirect(action: 'anotherAction', params: params)
}

Если вам нужно охватить несколько запросов, например если у вас есть многоэтапная запись формы, предоставленная пользователю, вы можете использовать веб-потоки для сохранения состояния между запросами.

Для сервисов вам лучше просто передать то, что вам нужно в качестве аргументов для метода сервиса , а не выставлять params. Пример (аналогично разделу «Доступ к службам» здесь ):

// service
def myServiceMethod(def foo, def bar) {
    // do stuff
}

// controller
def myService
def myControllerAction {
    myService.myServiceMethod(params.foo, params.bar)
}

Предоставление параметров от контроллера к сервисному уровню нарушило бы подход, ориентированный на уровень, который Grails пытается предоставить вам; то есть компоненты "модель" и "контроллер" (из MVC) будут более тесно связаны .

0 голосов
/ 21 сентября 2010

Я бы также взглянул на цепочечные действия как способ передачи информации о модели

http://www.grails.org/Controllers+-+Redirects

0 голосов
/ 20 сентября 2010

Вы можете добавить ...

params: params

... в качестве аргумента для перенаправления, чтобы входящие параметры отправлялись вместе с перенаправлением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...