Когда разрешена пустая строка, недопустимо значение FieldEditorPreferencePage

#java #validation #eclipse-rcp

#java #проверка #eclipse-rcp

Вопрос:

Я разрабатываю приложение на основе Eclipse RCP. Я создал FieldEditorPreferencePage с помощью двух редакторов полей. Оба редактора могут иметь пустую страницу:

 protected void createFieldEditors() {
    DirectoryFieldEditor pythonDirectoryFieldEditor = new DirectoryFieldEditor(MyPreferenceConstants.PYTHON_DIRECTORY_PATH,
                PreferenceLabelMessages.getString(MyPreferenceConstants.PYTHON_DIRECTORY_PATH),
                getFieldEditorParent());
    pythonDirectoryFieldEditor.setEmptyStringAllowed(true);
    addField(pythonDirectoryFieldEditor);

    DirectoryFieldEditor libraryDirectoryFieldEditor =new DirectoryFieldEditor(MyPreferenceConstants.LIBRARY_DIRECTORY_PATH,
                PreferenceLabelMessages.getString(MyPreferenceConstants.LIBRARY_DIRECTORY_PATH),
                getFieldEditorParent());
    libraryDirectoryFieldEditor.setEmptyStringAllowed(true);
    addField(libraryDirectoryFieldEditor);

}
  

Но когда я ввел допустимый путь к каталогу в одно из этих полей, а другое пустое, я не могу нажать кнопку OK или Применить, потому что страница недействительна. В режиме отладки я вижу, что пустое поле возвращает false при isValid() вызове метода. Почему пустое поле недопустимо?
Как я могу это исправить?

Комментарии:

1. Я не могу воспроизвести это. Попробуйте выполнить отладку, чтобы узнать, когда / если refreshValidState вызывается метод.

2. Этот метод должен вызываться из FieldEditorPreferencePage или FieldEditor?

3. Это метод, в StringFieldEditor котором является суперклассом DirectoryFieldEditor .