У меня была такая же проблема в моем приложении 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();
}
Поняв это, я ВСЕГДА сделаю это так. Надеюсь, что это поможет!
По состоянию на 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>