java - 如何指定除一条之外的所有路线?

标签 java spring spring-boot

我正在尝试使用 MobX 将我的旧项目从原生 JS 覆盖到 React。我的应用程序有几个页面,我想使用 react 路由器来处理它们。为此,我需要从 Spring-boot Controller 返回所有路由的 index.html 页面:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class RoutesController {
    @RequestMapping(value = { "", "/**" }, method = RequestMethod.GET)
    public String index() {
        return "index";
    }
}

此外,我在嵌入式 Apache Tomcat 服务器上有一个用于静态组件的特殊文件夹。此文件夹包含我的客户端应用程序的 build.js。 上面介绍的 Controller 可以通过 index.html 页面向服务器提供所有请求,但我在 /static/** 路由上也有客户端应用程序。 如何指定 Controller 中除 /static/** 之外的所有路由?

最佳答案

我解决了我的问题。要为所有请求仅获取一页,您的 Controller 必须实现 ErrorController 和两个方法:errorgetErrorPath。 这是一个例子:

import org.springframework.boot.autoconfigure.web.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class RoutesController implements ErrorController {
    private static final String PATH = "/error";

    @RequestMapping(value = PATH)
    public String error() {
        return "index";
    }

    @Override
    public String getErrorPath() {
        return PATH;
    }
}

服务器收到请求后不会找到任何路由,因此会返回error方法的结果。

也许这不是最好的解决方案,但是经过三天的互联网搜索,我没有找到更好的解决方案。

关于java - 如何指定除一条之外的所有路线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38217112/

相关文章:

java - 在 Java 8 中正确使用 URLConnection 和 try-with-resources

java - Spring mvc 表单发布到不同的 Controller ,或者想太多

spring - 如何使用 JAX-RS、Spring 和 JPA 管理事务

java - 如何在Java中写入json文件而不覆盖

spring-mvc - 尽管使用 @RequestMapping ("**",但在 Spring Boot 中提供静态内容

java - 如何在 Android 中并行运行线程

java - Java中使用递归的幂函数

java - 在 Swagger 中记录 Spring 的登录/注销 API

spring-boot - 在 Spring Boot 中使用 prometheus 自定义指标

java - Servlet 3.0项目打包WAR时修改WebInitParam