這是我第一次在Grails中使用webflow,我似乎無法解決這個問題。關聯和Grails webflow
我有一個看起來像這樣3個域類有關聯:
class A {
...
static hasMany = [ b : B ]
...
}
class B {
...
static belongsTo = [ a : A ]
static hasMany = [ c : C ]
...
}
class C {
...
static belongsTo = [ b : B ]
...
}
現在,GSP通過JavaScript中的控制器通信(由於我使用Dojo的)。當我嘗試remoteFunction正常的動作,我可以做這樣的事情:
def action1 = {
def anId = params.id
def currA = A.get(anId)
def sample = currA.b?.c // I can get all the way to 'c' without any problems
...
}
不過,我有一個Webflow和行動的內容是在一個Webflow ......它看起來是這樣的:
def someFlow = {
...
someState {
on("next") {
def anId = params.id // this does NOT return a null value
def currA = A.get(anId) // this does NOT return a null value
def sample = currA.b // error already occurs here and I need to get 'c'!
}.to("somePage")
...
}
...
}
在這種情況下,它告訴我,b不存在...所以我甚至不能'c'。有什麼建議怎麼辦? 謝謝...越來越真正的絕望...
糟糕,對不起,這是當我嘗試從我的代碼中推廣我的代碼時發生的情況:D感謝您指出了這一點。 嗯,現在(只是爲了簡化),我們只是說只有1 B(我會擔心後來收集B的......),但定義仍然存在。 大多數時候,錯誤是由流(關於空映射)產生的,所以我認爲這是一個單獨的問題。然而,我認爲更合適的說法是,在該行,B返回爲null INSIDE webflow ...如果我把這個函數放在webflow之外(就像示例'action1',它不是null – callie16 2010-04-26 00:49:36
我有注意到hasMany關係在流中(由於某種原因)的實現有點不同......具體來說,當在請求之間的流程範圍內進行對象的打開和關閉時,我會注意到一個hasMany集合,我確信在將它放到範圍之前完全加載(而不是懶惰)將恢復到特殊的實現列表,而不僅僅是當我將它從範圍中拉出時的ArrayList。查看實際實現類型currA.b是什麼,並嘗試將其轉換爲在嘗試達到c之前的實際B? – billjamesdev 2010-04-26 03:00:51
我在上面的回答中添加了一些更多...你是否缺少事件描述符的「to」部分? – billjamesdev 2010-04-26 03:04:45