我想提出一個類似的實現,從這個例子https://github.com/xvitcoder/spring-mvc-angularjs開始。與樣品
的主要區別一)把所有的AngularJS HTML文件下的webapp/WEB-INF /意見
B)有一個春天的ViewResolver映射/視圖。我們正在使用Velocity,但您可以使用Freechart或任何視圖技術。
<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/WEB-INF/views/">
</bean><!-- see xvitcoder sample for the complete web.xml-->
c)有一個控制器響應您的HTML部分請求。神奇的是,客戶端URL不需要匹配物理文件夾結構。當你有一個靜態html項目時,這是缺乏的。
@RequestMapping("dummypath/{folder}/{remainder}")
public String getSomePartial(@PathVariable("folder") String folder,
@PathVariable("remainder") String path) {
return folder + "/" + path;
}
dummpypath允許以隔離從像servlet或REST服務其他請求AngularJS泛音(ngInclude,ngView)的請求。 HTML文件實際上仍在/ views/folder/path下。你可以做更復雜的事情,比如計算不同的視圖名稱。
<div ng-include="dummypath/summary/table.html"></div>
將加載views/summary/table.html文件。你的ViewResolver會預先處理這個文件,允許一些服務器端的修復。
d)從Spring MVC向angularjs傳遞參數的示例。 定義在Spring控制器查詢並返回一個HTML文件
@RequestMapping
public String getPage(@RequestParam(value="someparam", defaultValue="0") string myparam,
ModelMap model){
model.addAttribute("someparam", myparam)
return "index"; //index.html
}
在AngularJs控制器注入$位置檢索參數。
$scope.someparam = ($location.search()).someparam
一旦索引被加載,我們就處於Angular生態系統中!我正在使用此方法刷新網頁,同時保留上下文。根據查詢參數,你可以加載一些JSON的東西或ngSwitch放在正確的部分。
E)的利弊
優點:簡單,你不能總是建立與靜態文件+ REST
缺點完整的解決方案:測試和建設項目需要額外的步驟。你需要在WAR中捆綁東西,在外部和內部測試它們。
查看Spring Data REST以及用於構建Restful Web服務的Spring HATEOAS。另外,檢查出澤西島。 –