2016-02-16 5 views
0

У меня есть окно в новом Neon Scout, и я хотел бы проверить значение, которое было установлено.Eclipse Scout Neon ListBox: execValidateValue (..) не работает

Я реализовал execValidateValue метод:

@Override 
    protected Set<String> execValidateValue(final Set<String> rawValue) { 

    if (rawValue.contains(CONSTANT.UNKNOWN)) { 
     final Set<String> unknownSet = new HashSet<String>(); 
     unknownSet.add(CONSTANT.UNKNOWN); 
     return super.execValidateValue(unknownSet); 
    } 

    return super.execValidateValue(rawValue); 
    } 

но не швы иметь никакого эффекта. Во время отладки я вижу, что внутри setValue(VALUE rawValue) метод updateDisplayText(validatedValue) вызывается с правильным списком строк.

Почему? Есть ли что-то, что я сделал не так?

Marko

ответ

0

Вы правы ... Если значение изменяется в процессе проверки (в execValidateValue(VALUE rawValue)), как это было предложено JavaDoc значение правильно хранится в скаутской модели, но изменение не отражается в HTML-интерфейс.

С помощью Сэмюэля Ренольда я попросил команду об этом: HTML-UI будет исправлен, чтобы отразить изменение в пользовательском интерфейсе. См. bug 493778.


Тестовый код для демонстрационного виджета. Измените DefaultField на ListBoxForm.

@Order(20) 
public class DefaultField extends AbstractListBox<Color> { 

    @Override 
    protected Class<? extends ICodeType<?, Color>> getConfiguredCodeType() { 
    return ColorsCodeType.class; 
    } 

    @Override 
    protected Set<Color> execValidateValue(Set<Color> rawValue) { 
    System.out.println(">> execValidateValue"); 
    printColors(rawValue); 
    if (rawValue != null && rawValue.contains(Color.RED)) { 
     return super.execValidateValue(Collections.singleton(Color.RED)); 
    } 
    return super.execValidateValue(rawValue); 
    } 

    private void printColors(Set<Color> rawValue) { 
    if (rawValue != null) { 
     for (Color color : rawValue) { 
     System.out.print(color + ", "); 
     } 
     System.out.println(""); 
    } 
    else { 
     System.out.println("null"); 
    } 
    } 

    @Override 
    protected void execChangedValue() { 
    System.out.println(">> execValidateValue"); 
    printColors(getValue()); 

    } 

    @Override 
    protected int getConfiguredGridH() { 
    return 5; 
    } 

    @Override 
    protected String getConfiguredLabel() { 
    return TEXTS.get("Default"); 
    } 
} 

Неправильное поведение также может быть воспроизведен в Скаут 4 (это релиз с истекшим сроком эксплуатации)

+0

Я не понимаю ваш код теста. Это для меня, чтобы помочь мне или другим увидеть ошибку? –

+0

Это тест, чтобы помочь другим увидеть ошибку. – Jmini

+0

Эта проблема будет отслежена как ошибка 493778: https://bugs.eclipse.org/bugs/show_bug.cgi?id=493778 – Jmini

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