0

私はそれを持っていて、そのList boxコードタイプを設定したいと思います。

私は新しいを作成しますAbstractCodeType :

public class MyCodeType extends AbstractCodeType<String, String> {

  private static final long serialVersionUID = 6808664924551155395L;

  public static final String ID = null;

  @Override
  public String getId() {

    return ID;
  }

  @Order(10.0)
  public static class UnknownCode extends AbstractCode<String> {

    private static final long serialVersionUID = -1307260056726644943L;

    public static final String ID = "Unknown";

    @Override
    protected String getConfiguredText() {

      return TEXTS.get("Unknown");
    }

    @Override
    public String getId() {

      return ID;
    }
  }
}

そして、リストボックスにこのコードタイプを設定しました:

 @Override
  protected Class<? extends ICodeType<?, String>> getConfiguredCodeType() {

    return MyCodeType.class;
  }

しかし、うまくいきません。空箱を返却します。

AbstractListBox.classデバッグ中に、 ininitConfigメソッドでこのコード タイプを呼び出し、コード タイプをm_lookupCallinsideに設定することに気付きましたsetCodeTypeClass。その後、内部execLoadTableDataで取得しますcallが、この呼び出しは呼び出されたときに空の配列を返しますcall.getDataByAll()

コード タイプと Lookup 呼び出しの間の変換が正しく機能していないと思われます。

編集


問題がどこにあるかをデバッグしようとします。パスをたどる場合:

initConfig() -> CodeLookupCall.newInstanceByService(m_codeTypeClass); (line 581)

そして、あなたが中を見ればCodeLookupCall;

getDataByAll() in line 221 `resolveCodes(v)` -> BEANS.opt(m_codeTypeClass) -> bean.getInstance() -> m_producer.produce(this) -> return (T) getCache().get(createCacheKey(type));

これは 97 行目のクラス CodeService.class にあります。

Class<T>type は正しいクラスであり、createCacheKey(type)null オブジェクトではなくgetCache().get(...)returnを返しnullます。この時点から、すべてが null になります ( getCodeType が null を返すことに関して妥当なことです)。

これは、誰かが何が間違っているのかを理解するのに役立つ場合、デバッグ中に見つけたものです。

4

2 に答える 2

2

コードタイプ クラスが Bean マネージャーによって見つからないようです。CodeService は、そのクラスパス (サーバーでアクセス可能) で CodeTypes のみを検索します。

-> クラスを共有プロジェクトに移動する必要がある場合があります。

連絡先デモ アプリケーションでコード タイプの例を見つけることができます: https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/tree/releases/5.2.x/code/contacts

于 2016-02-16T08:30:38.913 に答える