包内的grails服务
包内的grails服务,grails,groovy,service,Grails,Groovy,Service,我对grails和spring非常陌生 Me创建了一个服务,如下所示 services\com.mypackage\MyService 在哪里 class MyService { static transactional = true def serviceMethod(params) { println "params:"+params } } 然后在我的控制器中 controller\com.mypackage\mycontroller 然
我对grails和spring非常陌生
Me创建了一个
服务
,如下所示
services\com.mypackage\MyService
在哪里
class MyService {
static transactional = true
def serviceMethod(params) {
println "params:"+params
}
}
然后在我的控制器中
controller\com.mypackage\mycontroller
然后在它的行动中,我试图像这样接近它
def myaction= {
com.mypackag.MyService myService //also used def myService
myService.serviceMethod(params)
render(view: "otherpage")
}
但它显示以下错误:(
它不能成为myservice的对象
myService shows null
我犯了什么错误
如果有人能为我提供一些使用grails服务的好的简单链接和教程,那将非常有帮助谢谢你,我会读的 2) 我会使用grails提供的命令行工具为您提供服务,因为这样可以避免您将内容放入无效目录(
com.mypackage
,因为文件夹名只会给您带来麻烦),而且它会确保您在groovy文件的顶部有正确的包声明
2) 我会使用grails提供的命令行工具为您提供服务,因为这样可以避免将内容放入无效目录(
com.mypackage
,因为文件夹名只会给您带来麻烦),它将确保在groovy文件的顶部有正确的包声明您的目录层次结构与您的包不对应。您应该将服务的目录层次结构更改为:
services\com\mypackage\MyService.groovy
并确保在MyService.groovy的顶部添加以下内容
package com.mypackage
class MyService {
// .....
}
同样,将控制器的目录层次结构更改为
controller\com\mypackage\MyController.groovy
然后在控制器中获取对服务的引用
// add the correct package statement
package com.mypackage
// rename the controller and the mycontroller.groovy file to MyController
class MyController {
// this will be injected by Spring (it must be named with a lower-case 'm')
def myService
def myaction= {
// use the service inside your action
myService.serviceMethod(params)
render(view: "otherpage")
}
}
您的目录层次结构与您的包不对应。您应该将服务的目录层次结构更改为:
services\com\mypackage\MyService.groovy
并确保在MyService.groovy的顶部添加以下内容
package com.mypackage
class MyService {
// .....
}
同样,将控制器的目录层次结构更改为
controller\com\mypackage\MyController.groovy
然后在控制器中获取对服务的引用
// add the correct package statement
package com.mypackage
// rename the controller and the mycontroller.groovy file to MyController
class MyController {
// this will be injected by Spring (it must be named with a lower-case 'm')
def myService
def myaction= {
// use the service inside your action
myService.serviceMethod(params)
render(view: "otherpage")
}
}
你犯了一个错误。
您正在
myaction
闭包中声明myService
。应该在任何方法或闭包之外的控制器中执行
您可以使用任何方法或闭包中的服务对象(此处为myService)访问您的服务方法
所以像这样改变
在controller\com.mypackage\mycontroller
中,首先声明您的服务
def myService
然后您可以在任何闭包中访问它
def myaction= {
myService.serviceMethod(params)
render(view: "otherpage")
}
你犯了一个错误。
您正在myaction
闭包中声明myService
。应该在任何方法或闭包之外的控制器中执行
您可以使用任何方法或闭包中的服务对象(此处为myService)访问您的服务方法
所以像这样改变
在controller\com.mypackage\mycontroller
中,首先声明您的服务
def myService
然后您可以在任何闭包中访问它
def myaction= {
myService.serviceMethod(params)
render(view: "otherpage")
}
感谢tim_yates我在IntelliJ IDEA 10.0.2中工作,在那里我创建了软件包,并通过右键点击服务。您要求我删除该软件包?谢谢tim_yates,我在IntelliJ IDEA 10.0.2中工作,在那里我创建了软件包,并通过右键单击服务。你要我删除那个软件包?更新你的帖子,详细说明你的新配置和你遇到的错误,我会尽力帮助你,其中有一个错误。我声明myaction中包含myService。现在我变了,工作很好。谢谢你的帮助。请更新你的帖子,详细说明你的新配置和你遇到的错误,我会尽力帮助你。这里有一个错误。我声明myaction中包含myService。现在我变了,工作很好。谢谢你的帮助。