Могу ли я передать параметры из контроллера в класс обслуживания

#grails #groovy

#grails #groovy

Вопрос:

В studentRegister интерфейсе контроллера

 def save() {
    def studentRegister=studentRegisterService.serviceRegisterSave(params)
}
 

В studentRegisterService классе

 def serviceRegisterSave(params){
    // get the params and do operation
}
 

Могу ли я получить параметры из интерфейса контроллера в класс обслуживания? Как я могу передать эту область?

Комментарии:

1. Я получаю параметры из запроса в методе сохранения контроллера. Затем я должен реализовать бизнес-логику в классе обслуживания. Итак, я могу передать параметры методу класса обслуживания, как указано выше в моем коде.

2. Спасибо. Потому что только этот бизнес-уровень я не могу запустить. Поэтому я не мог догадаться, каков результат.

Ответ №1:

Попробуйте это:

 import org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap

class StudentRegisterService {

    def serviceRegisterSave(GrailsParameterMap params){
        // get the params and do operation
    }
}
 

Ответ №2:

Да, вы можете передать параметры, которые находятся в области запроса. В grails 2.2.1 я сделал это в MyController.

 def flag = myService.saveSomething(params)
 

И в MyService.

 def saveSomething(params){
}
 

Поскольку карта параметров предоставляется grails через объект запроса. Обратитесь к документам

Но стоит ли это делать? Нет. Не рекомендуется передавать параметры в сервис

Рекомендуется извлечь требуемые значения из параметров в вашем контроллере, а затем передать их в вашем сервисе

Обратитесь к этой документации

Комментарии:

1. Спасибо за ваше предложение.

2. ссылки для меня разорваны. Замена версии на latest возвращает действительную актуальную документацию docs.grails.org/latest/ref/Controllers/params.html , docs.grails.org/latest/guide/services.html

Ответ №3:

вы можете использовать это

 //in controller same as yours
 def save() {
 def studentRegister=studentRegisterService.serviceRegisterSave(params)
 }
 //change your service as below given
 def serviceRegisterSave = { params ->
 // get the params and do operation
 }