【问题标题】:How to check if GWT RequestFactory's proxy is frozen?如何检查 GWT RequestFactory 的代理是否被冻结?
【发布时间】:2012-12-04 20:37:14
【问题描述】:

这就是我现在的做法:

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

  itemProxy.setQuantity(20);
}

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

【问题讨论】:

    标签: gwt requestfactory


    【解决方案1】:

    你可以试试:

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

    【讨论】:

      【解决方案2】:

      鉴于edit() 将返回代理,如果它已经被编辑(在同一个RequestContext 中),你为什么不简单地edit() 它无条件?


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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-10-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-08
          相关资源
          最近更新 更多