2012-12-04 53 views
0

這就是我現在做的方式:如何檢查GWT RequestFactory的代理是否被凍結?

try { 
    itemProxy.setQuantity(20); 
} catch (IllegalStateException e){ 
    itemProxy = context.edit(itemProxy); 
    table.replaceProxy(index, itemProxy); 

    itemProxy.setQuantity(20); 
} 

是否有任何其他方式比捕捉異常?我知道代理具有「凍結」屬性,因爲我在Eclipse調試器中看到它。但我不能將代理強制轉換爲任何類或AutoBean接口來讀取凍結屬性的值。

回答

2

你可以試試:

boolean frozen = com.google.web.bindery.autobean.shared.AutoBeanUtils.getAutoBean(itemProxy).isFrozen(); 
+0

+1爲您的答案。 –

0

一旦你調用編輯上的代理,然後只將是可變的,否則就被凍結。要知道它是否凍結您可以使用由弗洛朗培爾

boolean frozen = com.google.web.bindery.autobean.shared.AutoBeanUtils.getAutoBean(itemProxy).isFrozen(); 
2

鑑於edit()將返回代理,如果它已經被編輯(在同一RequestContext即是)給出的答案,你爲什麼不乾脆edit()它無條件的?


作爲一個方面說明,我不太明白你怎麼可以在一個情況下,你不知道你的代理是編輯還是不行。這可能是問題的關鍵;異常應該仍然是一個例外情況(這聽起來像是說明顯的,但在GWT和JS中尤其如此),並且代碼流不應該有「呃,好吧,我不確定我是什麼狀態在,所以讓我們嘗試一下「路徑。