Wtforms не показывает ошибок из-за требуемого HTML тега [duplicate]

У меня была такая же проблема в моем приложении JavaFX. Еще более странно: в моей среде разработки Windows все отлично работало с загрузчиком fxml. Но когда я выполнил тот же самый код на моей машине Debian, у меня были аналогичные ошибки с «location not set».

Здесь я прочитал все ответы, но ни один из них, похоже, действительно «не разрешил» проблему. Мое решение было легким, и я надеюсь, что это поможет некоторым из вас:

Возможно, Java запутается методом getClass (). Если что-то работает в разных потоках или ваш класс реализует какие-либо интерфейсы, он может прийти к выводу, что метод getClass () возвращает другой класс, чем ваш. В этом случае ваш относительный путь к creatProduct.fxml будет неправильным, потому что ваши «находятся» не в том пути, который, по вашему мнению, вы ...

Итак, чтобы быть на стороне сохранения: будьте более конкретными и попробуйте использовать статическое поле класса в своем классе ( Обратите внимание на ваш классClassHere.class ).

@FXML
public void gotoCreateProduct(ActionEvent event) throws IOException {
   Stage stage = new Stage();
    stage.setTitle("Shop Management");
    FXMLLoader myLoader = new FXMLLoader(YourClassHere.class.getResource("creatProduct.fxml"));
    Pane myPane = (Pane) myLoader.load();            
    Scene scene = new Scene(myPane);
    stage.setScene(scene);
    prevStage.close();
    setPrevStage(stage);
    stage.show();      
}

Поняв это, я ВСЕГДА сделаю это так. Надеюсь, что это поможет!

1
задан davidism 10 June 2018 в 20:58
поделиться

1 ответ

По состоянию на WTForms 2.2 атрибут HTML required отображается, когда в поле есть валидатор, который устанавливает флаг "required" , Это позволяет клиенту выполнять некоторые основные проверки, сохраняя обратную связь с сервером.

Вы должны оставить его в браузере, чтобы справиться с этим. Эти сообщения являются стандартными и настраиваются для локали пользователя компьютера. Для управления этими сообщениями существует JavaScript API (см. Переполнение стека и MDN ), хотя WTForms не обеспечивает никакой интеграции с ним (но хорошая идея для расширения ).

Если вы действительно хотите отключить это, вы можете передать required=False при рендеринге поля.

{{ form.name(required=False) }}

Вы можете отключить его для целую форму вместо переопределения Meta.render_field.

class NoRequiredForm(Form):
    class Meta:
        def render_field(self, field, render_kw):
            render_kw.setdefault('required', False)
            return super().render_field(field, render_kw)

Вы можете отключить ее для нескольких форм, наследуя от базовой формы, которая ее отключает.

class UserForm(NoRequiredForm):
    ...

Вы также можете отключите проверку клиента, не изменяя столько кода, установив атрибут novalidate в тег HTML form.

<form novalidate>

</form>

См. обсуждение запроса на перенос добавив это поведение.

3
ответ дан davidism 15 August 2018 в 19:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: