Grails 不使用';不存在

Grails 不使用';不存在,grails,model-view-controller,gsp,url-mapping,Grails,Model View Controller,Gsp,Url Mapping,我有一个fizzbuzz.gsp,我有一个FizzBuzzController,它带有一个index()方法来呈现这个gsp: class FizzBuzzController { def index() { render(view: "fizzbuzz", model: getModel()) } def getModel() { ... } } 通常,要获取与fiizbuzz.gsp文件关联的HTML,我会调用http://myapp.exampl

我有一个
fizzbuzz.gsp
,我有一个
FizzBuzzController
,它带有一个
index()
方法来呈现这个gsp:

class FizzBuzzController {
    def index() {
        render(view: "fizzbuzz", model: getModel())
    }

    def getModel() { ... }
}
通常,要获取与
fiizbuzz.gsp
文件关联的HTML,我会调用
http://myapp.example.com/fizzbuzz

我有一个独特的情况,我现在需要我的Grails应用程序为HTML文件URL请求提供服务,比如
http://myapp.example/fizzbuzz.html


Grails是否提供了映射
http://myapp.example/fizzbuzz.html
http://myapp.example.com/fizzbuzz
?这样,客户端可以请求一个HTML文件,但仍然可以从服务器端返回正确的GSP/HTML文件。有什么想法吗?

你可以用不同的方法来做。如果您使用的是Grails2.3或更高版本,则可以在
UrlMapping.groovy
中使用
redirect
,如下所示:

"/fizzbuzz.html"(redirect: "/fizzBuzz")
指示“如果在url中看到fizzbuzz.html,则重定向到
fizzbuzz
控制器的
index
操作”

或者您也可以将其显式用作

//index is the default action therefore specifying action in the map is optional
"/fizzbuzz.html"(redirect: [ controller: "fizzBuzz", action: ''index' ]) 
或者,您可以将映射复制为

"/fizzbuzz.html"(controller: "fizzBuzz") 
在任何一种情况下,它都会调用action方法,而不是查找任何静态资源