2016-05-17 81 views
0

我有一個Angular開發的Web應用程序,後面提供了REST服務調用和單頁面應用程序的根頁面以及定義了ui路由器的模板html文件。該應用程序已將html5mode設置爲true。爲了有重裝鑊,我添加映射UrlMappings.groovy:Grails UrlMappings Angular html5mode Refresh

"/app1/**"(view:"/app1/index")

/app1是應用程序的基本URL,/app1/index將由grails-app/view/app1/index.gsp提供服務,但這項事業的問題,因爲所有的模板網址用相對編碼,這意味着它們在URL中也有前綴/app1

理想情況下,我想要映射/app1/**.html,它仍將所有模板Url映射到web-app/app1下的html文件。但我找不到有關如何實現這一目標的信息。我嘗試添加

static excludes = ["/**.html"]

但它也不起作用。

無論如何,要解決這個問題而不是重構動態Url和模板文件Url來強制它們擁有完全不同的前綴?

回答

0

您的靜態資源可通過servlet上下文消耗。所以你可以創建一個控制器或者一個特性來混合到映射到你的任何靜態模板的現有控制器中。

/** 
* Render some static content for AngularJS consumption from public folder e.g. "/templates/home.html" 
*/ 
def renderStatic(String fileName) { 
    try { 
     response.outputStream << getServletContext().getResourceAsStream(fileName) 
     response.outputStream.close() 
    } catch (e) { 
     render status: NOT_FOUND 
    } 
} 
+0

最後,我只是將所有的html模板文件移出到web-app/templates下的文件夾,並相應地更改了路由。 – hanaZ