Spring Boot Vaadin catch“无法导航到”route“并重定向到现有路线

lmvvr0a8  于 2022-12-04  发布在  Spring
关注(0)|答案(2)|浏览(106)

我正在做一个Vaadin应用程序,有三个视图,每当用户输入一个未知的URL,他看到这个页面:
无法导航到'stackoverflow'原因:找不到'stackoverflow'的路由
可用路由:应用程序登录注销
此详细消息仅在开发模式下运行时显示。我想定义一个路由而不是显示此页面,如何操作?就像每当显示此消息时,它都应该吞下它并重定向到现有路由。

ulmd4ohb

ulmd4ohb1#

您看到的是默认的“未找到”错误处理程序。您可以通过创建一个实现HasErrorParameter<NotFoundException>的UI组件(例如VerticalLayout)子类来定义自己的错误处理程序。Flow将自动从应用程序中获取该类,其方式与它获取@Route注解类的方式相同。

wr98u20j

wr98u20j2#

我设法这样做:

@Tag(Tag.DIV)
@DefaultErrorHandler
public class MYNoRouteHandler extends RouteNotFoundError {

private static final long serialVersionUID = 7169334501543395112L;
private static final Logger log = LoggerFactory.getLogger(MyNoRouteHandler.class);

@Override
public int setErrorParameter(BeforeEnterEvent event, ErrorParameter<NotFoundException> parameter) {
    log.debug("Not existing view requested with name: /" + event.getLocation().getPath());
    log.debug("Redirect user to /start");
    event.forwardTo(StartView.class);
    return HttpServletResponse.SC_NOT_FOUND;
    }
}

再次感谢你帮我的忙。有时我想知道为什么别人没有问。也许他们看了手册?

相关问题