我有一个在Angular开发的Web应用程序,Grails在后面提供REST服务调用和单页应用程序的根页以及定义ui-router的模板html文件。该应用程序已将html5mode设置为true。为了重新加载,我将映射添加到UrlMappings.groovy:
"/app1/**"(view:"/app1/index")
/app1
是应用的基本网址,/app1/index
将由grails-app/view/app1/index.gsp
提供,但这会导致问题,因为所有模板网址都是相对编码的,这意味着它们在Url中也有前缀/app1
。
理想情况下,我希望有/app1/**.html
的映射,它仍会将所有模板Url映射到web-app/app1
下的html文件。但我无法找到有关如何实现这一目标的信息。我试着添加
static excludes = ["/**.html"]
但它也不起作用。
无论如何要解决这个问题,而不是重新构建动态网址和模板文件Url,以强制它们拥有完全不同的前缀?
答案 0 :(得分: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
}
}