Grails服务中的错误

时间:2015-10-11 19:38:04

标签: grails

我是Grails的新手,我正在使用 Grails 2.5.1 ,我正在创建一项服务,但当我调用此服务时,我得到了以下错误:

Class:groovy.lang.MissingPropertyExceptionMessage:No such property: flash for class: com.sherif.UtilsService Possible solutions: class

Class:groovy.lang.MissingMethodExceptionMessage:No signature of method: com.sherif.UtilsService.render() is applicable for argument types: (java.util.LinkedHashMap) values: [[view:forget]] Possible solutions: every(), find(), find(groovy.lang.Closure), every(groovy.lang.Closure)

这是我的服务:

class UtilsService {

def sendPassword(params) {

    def enteredCeredintials = User.findByEmail(params?.email)
    if (enteredCeredintials?.email==null) {
        flash.message = message(code: 'user.email.notfound', args: [params?.email])

    }
    else {
        flash.message = message(code: 'user.passwordSent', args: [params?.email])
        }
 render (view: "forget")
}
}

可能导致这些错误的原因是什么?

由于

1 个答案:

答案 0 :(得分:2)

flash是Web层中使用的临时存储 - 它是控制器中可用的隐式变量之一,以及requestresponsesession等等但它在服务中不可用 - 服务中没有隐式变量。

理想情况下,您应该将每个层分开。服务不应该使用或了解Web层 - 它们是使用业务逻辑执行各种任务,使用数据库等的辅助类。它们由控制器调用,但不应该和#39;被Web层概念污染。

要解决此问题,请提取出与Web层无关的逻辑,并在服务中执行此操作。然后返回在控制器中呈现视图所需的任何数据,在这种情况下,还要在flash范围内另外存储一些数据。