【问题标题】:Grails UrlMappings with Angular html5mode Refresh带有 Angular html5mode 刷新的 Grails UrlMappings
【发布时间】:2016-09-13 01:42:33
【问题描述】:

我有一个在 Angular 中开发的 web 应用程序,在后台使用 Grails 服务 REST 服务调用和单页应用程序的根页面以及定义 ui-router 的模板 html 文件。应用程序将 html5mode 设置为 true。为了重新加载 wok,我将映射添加到 UrlMappings.groovy:

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

/app1 是应用程序的基本 url,/app1/index 将由 grails-app/view/app1/index.gsp 提供服务,但这会导致问题,因为所有模板 Url 都是相对编码的,这意味着它们也有前缀 /app1 in网址也是。

理想情况下,我希望有一个/app1/**.html 的映射,它仍然将所有模板 URL 映射到 web-app/app1 下的 html 文件。但我找不到有关如何实现这一目标的信息。我尝试添加

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

但它也不起作用。

除了重构动态 Url 和模板文件 Url 以强制它们具有完全不同的前缀之外,还有什么办法解决这个问题?

【问题讨论】:

    标签: angularjs grails url-rewriting


    【解决方案1】:

    您的静态资源可通过 servlet 上下文使用。因此,您可以创建一个控制器或一个 trait 来混入映射到您的任何静态模板的现有控制器中。

    /**
     * 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
        }
    }
    

    【讨论】:

    • 最后,我只是将所有 html 模板文件移到 web-app/templates 下的文件夹中,并相应地更改了路由。
    猜你喜欢
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 2014-11-19
    相关资源
    最近更新 更多