2015-06-26 44 views
1

Grails:我想要一些數據只存在於兩個相應的重定向。如果我使用會話,只要用戶的瀏覽器打開或有時會更長時間,它就會停留。如果我使用閃光燈,它將一直持續到下一個gsp文件被渲染。我的控制器A用一些數據重定向到另一個控制器B.數據被存儲直到B的視圖b.gsp被渲染。現在在b.gsp中,用戶將填寫某種形式並提交它,以便將另一個請求發送給B中的另一個動作。我希望來自A的數據保持到此時爲止。 (兩個請求正確嗎?一個重定向和另一個提交)。如何讓會話數據只保留兩個請求

class AController { 

    def callBWithSomeData() { 

     redirect (controller: "B", action: "showB", params: [data: "id"]) 
    } 

    def backFromB() { 

     def myDataBack = params.persistingdDataForARoundTrip 
    } 
} 

class BController { 

    def showB() { 

     def data = params.data 

     render "b" 
    } 

    def fromBtoA() { 

     redirect (controller: "A", action: "backFromB", params: [persistingdDataForARoundTrip: "id"]) 
    } 
} 

好吧,你可能會說,爲什麼不把它放在會議和一次請求追溯到A.不過,如果什麼用戶去b.gsp清除該會話條目出於某種原因,瀏覽到一些其他頁面不提交數據,在這種情況下會話數據未被清除。它留在系統中,並在我的應用程序中破壞了一些東西。

或者您可能會說,爲什麼不使用flash,在b.gsp中放置一個隱藏字段,並將值從A傳遞給flash,並在下一個請求中將其提交給B的第二個動作。但不是;假設由於某種原因,我無法訪問b.gsp(B和b.gsp是完全獨立系統的一部分)。我不能惹他們。

我嘗試閱讀關於grails中的web流量和子流,但我看不出有什麼用處。我猜想Webflows在同一個控制器內工作(但我不確定)。

任何幫助?

感謝

+0

旅行,所以我不能發佈一個完整的答案,但我覺得一個時間數據的插件會很好地工作適合你:https://開頭的Grails。 org/plugin/one-time-data –

回答

0

考慮使用Grails chain。根據文檔:

[鏈接]使用閃存存儲隱式保留模型後HTTP從一個動作重定向到另一個。

,並可以用作:

def one() { 
    chain action: 'two', model: [name: 'Tony', town: 'Birmingham'] 
} 

def two() { 
    [name: 'Anthony', country: 'England'] 
} 
+0

看起來很有希望。我會盡力回覆你 –

相關問題