Как перенаправить страницу ошибки springboot на пользовательский интерфейс ошибки vaadin?

У меня есть страница с ошибкой в ​​пользовательском интерфейсе vaadin. Но иногда мы можем написать неверный URL-адрес и увидеть страницу с ошибкой springboot.

В этом случае я хочу показать страницу ошибки пользовательского интерфейса vaadin. Кстати, у меня уже есть отрендеренная страница 404 для springboot. Но я не хочу этого показывать.

Это мой интерфейс ошибки vaadin. Но это работает в приложении. (http://localhost:7001/MyApplication/#!error)

иногда я пишу неверный URL-адрес, например: http://localhost:7001/MyApplication/blablablabla

в этом случае я хочу перенаправить страницу ошибки vaadin (http://localhost:7001/MyApplication/#!error) Но Springboot перенаправляет меня на отображаемую страницу 404.

Это возможно?

@UIScope
@SpringView(name = ErrorView.VIEW_NAME)
public class ErrorView extends VerticalLayout implements View {

    public static final String VIEW_NAME = "error";

    private Label explanation;

    public ErrorView() {
        Label header = new Label("The view could not be found");
        header.addStyleName(MaterialTheme.LABEL_H1);
        addComponent(header);
        addComponent(explanation = new Label());
    }

    @Override
    public void enter(ViewChangeListener.ViewChangeEvent event) {
        explanation.setValue(String.format("You tried to navigate to a view ('%s') that does not exist.", event.getViewName()));
        getUI().getNavigator().navigateTo(ErrorView.VIEW_NAME);
    }
}

person stephan    schedule 06.01.2018    source источник


Ответы (2)


вы можете поместить страницу 404/500 в папку resources/error/, Spring boot автоматически перенаправит эту страницу при возникновении ошибки

person HelloWood    schedule 08.01.2018
comment
Извините, но пользовательский интерфейс vaadin не является html-страницей. Я знаю твое предложение. - person stephan; 08.01.2018

Я думаю, что SpringNavigator может решить вашу проблему. При определении вашего навигатора вы также можете определить представление ошибок. См. пример ниже

@SpringUI(path = "ui")
public class DemoUI extends com.vaadin.ui.UI {
    @Override
    protected void init(VaadinRequest vaadinRequest) {
        SpringNavigator navigator = new SpringNavigator();
        navigator.setErrorView(new ErrorView());
        setNavigator(navigator);
    }
}
person ensarg    schedule 08.01.2018
comment
объект навигатора имеет значение null, когда мы используем другой URL-адрес пути vaadin - person stephan; 10.01.2018
comment
Это потому, что это тип com.vaadin.navigator, который предназначен для навигации по страницам vaadin. - person ensarg; 10.01.2018