【发布时间】:2016-02-26 21:20:52
【问题描述】:
我有一个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;
}
但不起作用。它返回空框。
在调试时,我注意到在initConfig 中的AbstractListBox.class 方法中,它调用此代码类型并在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) 返回的不是空对象,而是getCache().get(...) 返回null。从这一点开始,一切都是空的(什么是合理的 getCodeType 返回空。)
这是我在调试时发现的,如果它可以帮助某人找出问题所在。
【问题讨论】:
标签: listbox lookup eclipse-scout