2014-09-30 54 views
0

我有2視圖狀態如何使用glink標籤在grails webflow插件中從一個視圖狀態轉到另一個視圖狀態?

def createFlow = { 
    startState { 
    on("addItem"){ 
     //do something 
    }.to "startState" 

    on("deleteItem"){ 
     //do something 
    }.to "startState" 
    } 

    secondState { 
    on("addItem"){ 
     //do something 
    }.to "startState" 

    on("deleteItem"){ 
     //do something 
    }.to "startState" 
    } 
} 

下一個Webflow表示在每個視圖狀態,我想有一個GLINK標籤來稱呼對方,我嘗試沒有成功

<g:link action="create" event="startState">Start</g:link> 
<g:link action="create" event="secondState">Second</g:link> 

該解決方案我得到

在流程'purchaseOrder/create'的狀態'startState'中發生事件'startState'時未發現任何轉換 - 有效過渡條件是array [add Item,deleteItem] - 可能程序員錯誤,檢查TransitionCriteria的這個狀態的集合

我的問題是,從glink標記可能調用自我視圖狀態或其他視圖狀態?

感謝您的時間

+0

在上例中,您沒有任何方法可以轉換到「secondState」。這是這個例子的人造物嗎?或者它是你的問題?我期望在至少一個startState事件處理程序的.to中看到過渡到「secondState」。 – 2014-10-01 21:37:06

+0

這是我的問題,如果有可能的話 – user615274 2014-10-02 15:49:28

回答

0

可以使用g:link來觸發事件。

您的Webflow的結構應該是這樣的:

def createFlow = { 
    startState { 
    on("goToSecond"){ 
     //do something 
    }.to "secondState" 
    } 

    secondState { 
    on("goToStart"){ 
     //do something 
    }.to "startState" 
    } 
} 

在創建/ startState.gsp

<g:link action="create" event="goToSecond">Second</g:link> 

在創建/ secondState.gsp

<g:link action="create" event="goToStart">Start</g:link> 

的關鍵事情是:

  1. 你總是處於一種狀態,每個狀態都可以處理一個或多個事件。
  2. 您用信號通知導致當前狀態的事件處理程序觸發的事件,並且如果以這種方式設置,則將移動到另一個狀態。
  3. 每個州都有一個視圖,您可以使用g:submit或g:link來表示事件。

在你的情況下,你試圖直接發信號通知你的狀態,當你真的想要發信號的事件名稱。此外,它看起來像你試圖從一個單一的視圖。可以將單個視圖綁定到多個狀態(使用視圖覆蓋或使用模板),但這樣做並沒有多大意義。

相關問題