2017-09-25 38 views
0

我想創建一個使用Angularjs爲UI的應用程序,包括模塊化的角度路由,然後調用Spring MVC來調用DAO來執行一些基本的CRUD。麻煩是讓兩個人同時工作。到目前爲止,我所做的一切都導致其中一個或另一個達到404.Angularjs的Spring MVC,正確處理角度路由頁面

我可能是錯的,但我認爲問題紮根於web.xml,尤其是url模式。例如,如果我成立了映射像這樣:

<servlet-mapping> 
    <servlet-name>MyApp</servlet-name> 
    <url-pattern>/obviousJunk</url-pattern> 
</servlet-mapping> 

然後運行該應用程序,我可以預覽我的HTML頁面,看我所有的<div> S和<table> S和<img> S如何看都漂亮。這些網頁有http://localhost:8080/MyApp/#!/homehttp://localhost:8080/MyApp/#!/categoryList 等形式的網址,也就是說,所有網頁都具有角度路線「#!」。模式。

有了這個<url-pattern>,當然我的servlet不能被調用。但是,如果我改變了上面:

<servlet-mapping> 
    <servlet-name>MyApp</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

和命中http://localhost:8080/MyApp/services/category/list,那麼我可以成功執行這種方法:「#」

@RequestMapping(value="/services/category/list", method=RequestMethod.GET) 
public @ResponseBody String listCategory() { 
    return "Hello, World"; 
    // TODO: modify this method to make a DAO call and return a list of categories 
} 

但所有我的網頁與突然之間404,因爲沒有控制器的方法來服務他們,也不應該。

我想,如果我開頭的所有服務調用的URL與「/服務/」(如上圖所示),那麼我也許能修改我的web.xml中爲使(有和沒有*)

<servlet-mapping> 
    <servlet-name>MyApp</servlet-name> 
    <url-pattern>/services/*</url-pattern> 
</servlet-mapping> 

同樣,我更改了@RequestMapping註釋以包含和刪除「/ services」部分。沒有好處 - 我可以再次查看我的頁面,但服務調用404。控制器方法從未被調用。我還注意到一些在服務方法調用結束時添加「.do」的例子,並且製作了上面的<url-pattern>*.do</url-pattern>。這也失敗--給出了404,並且即使在@RequestMapping值的末尾添加「.do」,也不會調用 控制器方法。

我讀過幾個其他的問題,關於從<url-pattern>排除特定的東西,即任何帶「#!」的東西。在其中,但答案都說這個 是不可能的。我還簡單地嘗試了一種無所事事的方法,並且它從未被調用過(我懷疑它不起作用,但值得一試。)

我該如何解決這個問題?

+0

答案在這裏:http://forum.spring.io/forum/spring-projects/web/112412-spring-3-1-enablewebmvc-setting-alwaysusefullpath-property,通過這個問題和答案得出:https://stackoverflow.com/q/11692837/241291。隨意關閉重複。 – cobaltduck

回答