我刚开始尝试在 Grails 中使用服务以简化我的应用程序,我想从控制器发送一个布尔值作为参数的服务,并让它处理数据并执行某些操作或只是返回,但我不断收到错误,我不知道为什么。下面是我的代码:
控制器代码:
def testing(){
def userObjects = springSecurityService.currentUser
GroupCheckService.isEnabled(userObjects.group.notenabled)
}
服务代码:
class GroupCheckService {
static transactional = true
def useable(boolean notenabled) {
if(notenabled == true){
render(view:'/locked')
}else{
return
}
}
}
现在“未启用”项的值是一个布尔值,如果我将它放在控制器中,代码就可以工作,但是我只想让这个代码写在一个地方,这样我就可以从多个函数和控制器中调用它。当我在上面运行此代码并尝试加载“测试”视图时,我收到此错误:
错误代码:
| Error 2013-09-27 22:55:21,882 [http-bio-8080-exec-4] ERROR errors.GrailsExceptionResolver - ClassCastException occurred when processing request: [GET] /my_app/feature/testing
com.tool.GroupCheckService cannot be cast to com.tool.GroupCheckService. Stacktrace follows:
Message: com.tool.GroupCheckService cannot be cast to com.tool.GroupCheckService
有人可以告诉我我做错了什么以及为什么我不能将此布尔值传递给服务吗?提前致谢
** * ** * **编辑* ** * ** * **
我现在已经使用参数正确调用了服务,但是我遇到了另一个问题,即渲染不起作用,因为我怀疑这不起作用,因为它在控制器之外我实现了代码更改下面来解决这个问题,但这也不起作用。没有错误,但是当组被锁定并且它进入第一个 IF 视图未呈现时:S
import grails.gsp.PageRenderer
class GroupCheckService {
PageRenderer groovyPgeRenderer
static transactional = false
def isEnabled(boolean notenabled) {
if(notenabled == true){
println("INSIDE LOCKED IF")
groovyPgeRenderer.render(view: '/locked')
}else{
return
}
}
}
感谢您对此提供的任何帮助或建议。谢谢