如何检查GWT RequestFactory的代理是否被冻结?

时间:2012-12-04 10:39:26

标签: gwt requestfactory

这就是我现在这样做的方式:

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

  itemProxy.setQuantity(20);
}

除了捕获异常之外还有其他方法吗?我知道代理具有“冻结”属性,因为我在Eclipse调试器中看到它。但我不能将代理转换为任何类或AutoBean接口来读取冻结属性的值。

3 个答案:

答案 0 :(得分:2)

您可以尝试:

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

答案 1 :(得分:2)

如果edit()已经被编辑(在同一个RequestContext中),edit()会返回代理,为什么不能无条件地{{1}}呢?


作为旁注,我不太明白在你不知道你的代理是否被编辑的情况下你会如何处理。这可能是问题的症结所在;异常应该仍然是一个例外情况(听起来好像很明显,但在GWT和JS中尤其如此),代码流不应该有“呃,好吧,我不知道我是什么状态在,所以让我们尝试“路径。

答案 2 :(得分:0)

一旦你在代理上调用编辑,那么只有它是可变的,否则它被冻结。要知道它是否冻结,你可以使用FLorent Bayle给出的答案

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