Eclipse Scout Neon:代码类型不起作用

时间:2016-02-15 09:51:27

标签: listbox lookup eclipse-scout

我有一个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方法的initConfig中,它调用了此代码类型,并在m_lookupCall 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>类型是正确的类,createCacheKey(type)返回非null对象,但然后getCache().get(...)返回null。从这一点开始,一切都是null(关于getCodeType返回null是合理的。)

这是我在调试时发现的,如果它可以帮助某人弄清楚什么是错的。

2 个答案:

答案 0 :(得分:2)

看起来bean管理器找不到你的codetype类。 CodeService仅在其类路径中找到CodeTypes(可在服务器中访问)。

- &GT;您可能需要将您的课程移至共享项目。

您可以在联系人演示应用程序中找到代码类型的示例: https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/tree/releases/5.2.x/code/contacts

答案 1 :(得分:1)

我使用Eclipse Scout Neon M4测试了您的代码片段,我可以重现您描述的错误。

但是,看来这个bug已经用Scout Neon M5修复了。因此,我建议您升级到最新的里程碑版本,无论如何都是推荐的。