可以将Spring bean注入到Grails webflow中吗?我尝试了以下几种方法
class CheckoutController {
ShoppingService shoppingService
def checkoutFlow = {
start {
action {
// This attempt to access the service doesn't work
flow.addresses = shoppingService.getOrder()
}
}
}
}我可以从常规的控制器操作访问shoppingService,但不能从webflow的操作访问它(参见上文)。
发布于 2011-09-07 00:42:22
起初,我认为你列出的是伪代码,但我用你的例子做了一个示例应用程序,并获得了NPE。我想问题可能出在你的流程结构上。action块应该处于流状态。您的流定义应该类似于:
class CheckoutController {
ShoppingService shoppingService
def checkoutFlow = {
start {
action {
flow.addresses = shoppingService.getOrder()
if(flow.addresses) {
showForm()
}
else {
showError()
}
}
on("showForm").to "showForm"
on("showError").to "showError"
}
showError {
...
}
//etc.
}
}你绝对可以在你的web流中使用注入的服务。我猜问题出在你的流程结构上。
发布于 2011-12-27 07:33:20
将以下内容添加到您的控制器:
def transient shoppingService 发布于 2012-12-12 03:53:03
在包含传统操作和Web流的控制器中,webflows存在依赖注入问题。如果先执行传统的操作,它对我来说是有效的。
请参阅:GRAILS-7095 GRAILS-4141
Webflow还打破了混合控制器中defaultAction的概念。我发现第一个webflow会成功,并成为默认操作。
单独使用瞬态可以防止您的服务在流状态之间被序列化。(例如,不必实现serializable)
https://stackoverflow.com/questions/7306519
复制相似问题