在Grails 2.x中,以下作品:
class UrlMappings {
static mappings = {
/**
* Serving the index.html directly
*/
"/"(uri: "/ng/app/index.html")
}
}
鉴于index.html
目录中有web-app/ng/app/
个文件。现在,当我们浏览Grails 2中的网址http://localhost:8080
时,index.html
会自动呈现。
在Grails 3中,我在index.html
中添加了相同的src/main/webapp/
文件,我可以像http://localhost:8080/static/index.html
一样正确地浏览它。
所以,我试图在UrlMappings.groovy
:
class UrlMappings {
static mappings = {
/**
* Serving the index.html directly
*/
"/"(uri: "/static/index.html")
}
}
但是这给了我错误{"message":"Internal server error","error":500}
:
ERROR org.grails.web.errors.GrailsExceptionResolver - UrlMappingException occurred when processing request: [GET] /
Unable to establish controller name to dispatch for [null]. Dynamic closure invocation returned null. Check your mapping file is correct, when assigning the controller name as a request parameter it cannot be an optional token!. Stacktrace follows:
grails.web.mapping.exceptions.UrlMappingException: Unable to establish controller name to dispatch for [null]. Dynamic closure invocation returned null. Check your mapping file is correct, when assigning the controller name as a request parameter it cannot be an optional token!
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
我使用Grails 3.1.8 Angular配置文件创建了我的应用程序,后来删除了与Grails GSP插件,资产管道等相关的Angular相关内容。
答案 0 :(得分:1)
这似乎是Grails 3的一个悬而未决的问题,计划在Grails 3.2.0中得到解决。
答案 1 :(得分:1)
从URLMapping处理程序的Grails 3.x's
实施开始,您只能在URL映射中指定controller
,view
或redirect
。因此,uri
将失败,因为它不会映射到任何控制器或视图。
虽然在修改源代码之后,我找到了一个可能对您的用例有用的解决方法。您实际上可以在此处发出redirect
,因为重定向将能够处理uri
。
因此,您的URLMappings.groovy
应该像 - >
class UrlMappings {
static mappings = {
/**
* Serving the index.html directly
*/
"/"(redirect: [uri: "/static/index.html"])
}
}
此代码适用于我Grails 3.1.8
。
我希望这会有所帮助。