簡體   English   中英

依賴注入Grails Webflow

[英]dependency inject Grails Webflow

是否可以將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的操作訪問它(參見上文)。

在控制器中包含傳統操作和Web流的Webflow的依賴注入存在問題。 如果首先執行傳統操作,它對我有用。

見: GRAILS-7095 GRAILS-4141

Webflow還打破了混合控制器中defaultAction的概念。 我發現第一個webflow獲勝並成為默認操作。

單獨使用瞬態可以使您的服務在流狀態之間進行序列化。 (例如,不必實現可序列化)

將以下內容添加到您的控制器:

def transient shoppingService 

起初我認為你列出的是偽代碼,但我用你的例子制作了一個示例應用程序並獲得了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流中使用注入的服務。 我猜測問題在於你的流程結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM