如何指定除一个以外的所有路由?

时间:2016-07-06 05:53:03

标签: java spring spring-boot

我试图将我的旧项目从原生JS覆盖到React与MobX。我的应用程序有几个页面,我想使用react-router来处理它们。为此,我需要从我的Spring-boot控制器返回所有路由的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. 上面提到的控制器可以使用index.html页面为服务器提供所有请求,但我在/static/**路由上也有客户端应用程序。 除/static/**以外,如何指定控制器中的所有路径?

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。要为所有请求只提供一个页面,您的控制器必须实现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方法的结果。

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