Eclipse Scout Neon:代码类型不起作用
Eclipse Scout Neon : code type not working
我有一个 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;
}
但是不起作用。它 return 空框。
当我在调试时,我注意到在 AbstractListBox.class
中的 initConfig
方法中它调用此代码类型并在 m_lookupCall
中设置代码类型 setCodeTypeClass
。然后在 execLoadTableData
中,它得到 call
但是当调用 call.getDataByAll()
时调用 return 空数组。
我怀疑代码类型和查找调用之间的转换不能正常工作。
编辑
我尝试调试问题出在哪里,如果遵循以下路径:
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 行的 class CodeService.class 中:
Class<T>
类型是正确的 class 和 createCacheKey(type)
return 不是空对象但是 getCache().get(...)
return null
。从这一点开始,一切都是空的(关于 getCodeType return null 的合理之处。)
这是我在调试时发现的,如果它能帮助别人找出问题所在的话。
bean 管理器似乎没有找到您的代码类型 class。 CodeService 仅在其 class 路径(可在服务器中访问)中找到 CodeTypes。
-> 您可能需要将 class 移动到共享项目。
您可以在联系人演示应用程序中找到代码类型的示例:
https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/tree/releases/5.2.x/code/contacts
我用 Eclipse Scout Neon M4 测试了你的代码片段,我可以重现你描述的错误。
不过,Scout Neon M5 似乎已修复此错误。所以我建议你升级到最新的里程碑版本,无论如何推荐。
我有一个 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;
}
但是不起作用。它 return 空框。
当我在调试时,我注意到在 AbstractListBox.class
中的 initConfig
方法中它调用此代码类型并在 m_lookupCall
中设置代码类型 setCodeTypeClass
。然后在 execLoadTableData
中,它得到 call
但是当调用 call.getDataByAll()
时调用 return 空数组。
我怀疑代码类型和查找调用之间的转换不能正常工作。
编辑
我尝试调试问题出在哪里,如果遵循以下路径:
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 行的 class CodeService.class 中:
Class<T>
类型是正确的 class 和 createCacheKey(type)
return 不是空对象但是 getCache().get(...)
return null
。从这一点开始,一切都是空的(关于 getCodeType return null 的合理之处。)
这是我在调试时发现的,如果它能帮助别人找出问题所在的话。
bean 管理器似乎没有找到您的代码类型 class。 CodeService 仅在其 class 路径(可在服务器中访问)中找到 CodeTypes。
-> 您可能需要将 class 移动到共享项目。
您可以在联系人演示应用程序中找到代码类型的示例: https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/tree/releases/5.2.x/code/contacts
我用 Eclipse Scout Neon M4 测试了你的代码片段,我可以重现你描述的错误。
不过,Scout Neon M5 似乎已修复此错误。所以我建议你升级到最新的里程碑版本,无论如何推荐。