0

null 許容リストをサポートするために、次のエディターを使用しています。

public class NullableListEditor<T, E extends Editor<T>> extends Composite implements 
IsEditor<OptionalFieldEditor< List<T>, ListEditor<T,E> >> {
  private ListEditor<T, E> list = ListEditor.of(new ListEditorSource());
  private final OptionalFieldEditor<List<T>, ListEditor<T, E> > editor = OptionalFieldEditor.of(list);
…
}
public class NullableAListEditor  extends NullableListEditor<A, AEditor> {..}
public class NullableBListEditor  extends NullableListEditor<B, BEditor> {..}

たとえば、最初に NullableAListEditor を作成し、次に NullableBListEditor を作成すると、NullableAListEditor は正常に動作しますが、NullableBListEditor は、BEditor を AEditor にキャストできないという不平を言って失敗します。(B を作成してから A を作成すると、A は同様の理由で失敗します。) デバッグしたところ、AbstractEditorDelegate.java の問題のようでした: http://code.google.com/p/google-web-toolkit /source/browse/releases/2.4/user/src/com/google/gwt/editor/client/impl/AbstractEditorDelegate.java?r=10474 の 75 行目、 NullableBListEditor の場合、 createComposedDelegate() によって返されるオブジェクト タイプは同じですNullableAListEditor のそれと同じです。最初のエディタ(NullableAListEditor)を作ってから型が変わらないように見えたのですが、原因がわかりませんでした。

詳細なエラー:

java.lang.ClassCastException: ..editor.B.BEditor cannot be cast to
...editor.A.AEditor
at ..editor.A.AEditor_SimpleBeanEditorDelegate.setEditor(AEditor_SimpleBeanEditorDelegate.java:6)
    at com.google.gwt.editor.client.impl.AbstractEditorDelegate.initialize(AbstractEditorDelegate.java:200)
    at com.google.gwt.editor.client.impl.AbstractEditorDelegate.addSubDelegate(AbstractEditorDelegate.java:156)
    at com.google.gwt.editor.client.impl.AbstractEditorDelegate$Chain.attach(AbstractEditorDelegate.java:78)
    at com.google.gwt.editor.client.adapters.ListEditorWrapper.attach(ListEditorWrapper.java:95)
    at com.google.gwt.editor.client.adapters.ListEditor.setValue(ListEditor.java:164)
    at com.google.gwt.editor.client.adapters.ListEditor.setValue(ListEditor.java:1)
    at com.google.gwt.editor.client.impl.Refresher.visit(Refresher.java:40)
    at com.google.gwt.editor.client.impl.Initializer.visit(Initializer.java:49)
    at com.google.gwt.editor.client.impl.AbstractEditorContext.traverse(AbstractEditorContext.java:128)
    at com.google.gwt.editor.client.impl.AbstractEditorDelegate$Chain.traverse(AbstractEditorDelegate.java:100)
    at com.google.gwt.editor.client.impl.AbstractEditorDelegate$Chain.attach(AbstractEditorDelegate.java:83)
    at com.google.gwt.editor.client.adapters.OptionalFieldEditor.setValue(OptionalFieldEditor.java:113)
    at com.google.gwt.editor.client.impl.Refresher.visit(Refresher.java:40)
    at com.google.gwt.editor.client.impl.Initializer.visit(Initializer.java:49)
    at com.google.gwt.editor.client.impl.AbstractEditorContext.traverse(AbstractEditorContext.java:128)

私は何か間違ったことをしていますか?

どうもありがとう - ジェフ

4

1 に答える 1

0

問題 6016に直面しているだけです。GWT 2.5.0-rc1 で修正されました。

于 2012-08-27T08:51:57.180 に答える