#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
.