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

edit()すでに編集されている場合はプロキシが返されることを考えると(つまり、同じRequestContextです)、edit()無条件に単純にしてみませんか?


補足として、プロキシが編集されているかどうかがわからない状況に陥る可能性があることを私はよく理解していません。これがおそらく問題の核心です。例外は例外的なケースのままであるべきです (それは明白なことを述べているように聞こえますが、特に GWT と JS 全般に当てはまります)。で、そのパスを試してみましょう。

于 2012-12-04T12:37:14.030 に答える
2

あなたはそれを試すことができます:

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

プロキシで編集を呼び出すと、それのみが変更可能になり、それ以外の場合は凍結されます。凍結したかどうかを知るには、FLorent Bayle の回答を使用できます

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