2013-04-16 36 views
2

快速查看引導程序的init()完成後是否可以運行一段代碼?Grails在引導完成後執行服務方法

找到最好的方法嗎?

我有一些需要連接的外部系統,我想在這個模塊完成時顯示'連接到子系統'或類似的'索引'頁面,然後一旦它完成應用程序正常工作。

我是否認爲你不能訪問一個頁面,直到引導後?有一種簡單的方法來限制人們訪問系統的其他部分,而這項服務運行?這看起來可行嗎?

乾杯的任何幫助!

+0

你需要有它的屏幕?您可以在引導程序中調用服務,如果您關心結果,請創建一個域來存儲連接成功或失敗,並創建一個頁面來顯示結果。在引導完成之前,您看不到您的屏幕。如果你需要在頁面上發生這種情況,那麼我可以提出另一種方法。 – Alidad

+0

是的,雖然我不同意,但是高潮想要一個屏幕顯示一些信息,因爲它經歷了設置 – DJOodle

回答

1

根據你的要求,你也指出bootstrap不是你的朋友。您需要屏幕的視圖和控制器,以及與外部系統的連接邏輯服務。您還需要一個標誌或一種方法,以便在申請或會議範圍內對通信進行完整性檢查。然後,我會建議創建一個過濾器,並檢查是否有連接,如果不將它們重定向到將連接它的控制器。 須藤:

class ConnectionFilters { 
def filters = { 
    loginCheck(controller: '*', action: '*') { 
     before = { 
      if (!session.connection) { 
       redirect(controller:'connection',action: 'connect') 
       return false 
      } 
     } 
    } 
} 

}

class controller { 
    def connectionService 
    def connect(){ 
     try { 
      connectionService.connectTo('systemx') 
      connectionService.connectTo('systemy') 
      connectionService.connectTo('systemz') 
     } 
     catch(e){ 
      session.connection = false 
      redirect view:'error' 
     } 
     session.connection = true 
    } 
} 


class ConnectionService { 
    def connectTo(systemname){ 
     .... 
    } 
} 
+0

這部分。這正是我需要的東西。我甚至沒有想到過濾器。爲此歡呼,很好的回答和一個很好的起點。 – DJOodle