私はそれを持っていて、その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_lookupCall
insideに設定することに気付きました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 を返すことに関して妥当なことです)。
これは、誰かが何が間違っているのかを理解するのに役立つ場合、デバッグ中に見つけたものです。