2016-07-06 62 views
1

我想覆蓋我的舊項目從原生JS到React與MobX。我的應用程序有幾個頁面,我想使用react-router來處理它們。爲此,我需要爲從我春啓動控制器的所有路由返回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/**之外的所有路線?

+0

如果使用Spring Boot,靜態資源應該由它自動處理。你有什麼問題嗎? – dunni

+0

@dunni感謝您的回覆!不,我對靜態資源沒有任何問題。唯一的問題是我不知道如何配置路由處理。 – MrNVK

回答

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方法的結果。

也許這不是最好的解決方案,但經過三天的搜索互聯網我還沒有找到更好的。

相關問題