2016-02-15 5 views
0

У меня есть один List box, и я хотел бы задать его тип кода.Eclipse Scout Neon: тип кода не работает

создать новый 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 не работает должным образом.

EDIT


Я пытаюсь отлаживать, где есть проблема, и если следовать по пути:

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)); 

Это в классе CodeService.class в строке 97:

Class<T> тип подходит класс и createCacheKey(type) возвращение не нулевой объект, а затем getCache().get(...) возвращение null. С этого момента все имеет значение null (что разумно относительно того, что getCodeType возвращает null.)

Это то, что я обнаружил при отладке, если это помогает кому-то выяснить, что не так.

ответ

1

Я проверил фрагмент кода с Eclipse, Scout Неон M4 и я мог воспроизвести вашу описанную ошибку. Однако, похоже, эта ошибка была исправлена ​​с помощью Scout Neon M5. Поэтому я предлагаю вам перейти на последнюю версию веха, которая рекомендуется в любом случае.

2

Похоже, что ваш класс кода не найден менеджером компонента. CodeService находит только CodeTypes в своем пути к классам (доступным на сервере).

-> Возможно, вам потребуется переместить класс в общий проект.

Вы можете найти примеры типов кода в контакты демонстрационного приложения: https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/tree/releases/5.2.x/code/contacts

+0

У меня есть мой тип кода в совместном проекте, как в старых версиях Scout –

+0

Вы уверены, что ваш инвентарь Jandex для этого проекта является актуальным? См. Собственный вопрос: http://stackoverflow.com/questions/34673540/eclipse-scout-neon-service-registry-does-not-contain-a-service-of-type – Jmini

Смежные вопросы