0

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

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

  itemProxy.setQuantity(20);
}

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

4

3 回答 3

2

你可以试试:

boolean frozen = com.google.web.bindery.autobean.shared.AutoBeanUtils.getAutoBean(itemProxy).isFrozen();
于 2012-12-04T11:00:41.393 回答
2

如果edit()它已经被编辑过(同样RequestContext的),那么它会返回代理,你为什么不edit()无条件地简单地使用它呢?


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

于 2012-12-04T12:37:14.030 回答
0

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

boolean frozen = com.google.web.bindery.autobean.shared.AutoBeanUtils.getAutoBean(itemProxy).isFrozen();
于 2012-12-04T11:18:06.047 回答