2017-05-10 72 views
0

我遇到了以下問題。我想要一個使用Spring Boot的項目來提供一個REST API和一些通過Javascript訪問該API的靜態網頁。通過將它放在目錄下src/main/resources(或類路徑中的任何其他位置),可以提供靜態內容。但不幸的是它不起作用。Spring Boot Controller屏蔽了靜態內容

我創建了一個簡約的例子來顯示在Gitlab上可用的問題。這個例子是Spring Boot的基本示例項目,以及如何爲靜態Web內容提供服務。

直接生成項目後,它工作正常。但是,一旦我加入de.cyface.controller.TestController,我就無法再訪問我的靜態內容index.html。 TestController只是掩蓋它。

所以我的問題是,我如何配置我的控制器的Spring Boot項目和靜態頁面正常工作?解決方案可能非常簡單,我只是錯過了一些重要的事實,但我真的被困在這裏。 :(

回答

1

你應該把REST控制器和靜態控制器之間的差異 爲了讓你的代碼工作,你只需要創建一個名爲例如 StaticContentController喜歡這個新控制器:

@Controller 
public class StaticContentController { 

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

然後裏面的src /主/資源,創建文件夾的「模板」,然後添加的index.html

然後,如果你啓動服務器,命中http://localhost:8080/index將工作

+0

但是index.html應該在http:// localhost:8080/index.html下可用,而不是在'static'下。靜態文件夾應該是Spring Boot下的默認位置來放置靜態內容,這可以作爲根資源使用。 – ali

+0

@ali然後你可以通過「/」修改Controller的值,並將RequestMapping(「/ index」)添加到get方法中。不知道如果你可以使用一個HTML文件作爲靜態資源,靜態應該是圖像,CSS,JS,PDF格式,但不能確定模板。但你可以嘗試驗證它 – cralfaro

+0

使用該設置,你可以得到'循環視圖路徑[index]:將再次發送回當前的處理程序URL [/ index]。「這是我所期望的。 – ali

0

好。我解決了這個問題。我已宣佈我的@RestController@RestController(value="/test")。當然這是錯誤的。它應該是

@RestController 
@RequestMapping("/test") 
public class ... 

所以我忘了。 @RequestMapping註釋。 headatdesk

相關問題