鉴于此UrlMapping:
"/foo/$foobar" {
controller = "foo"
action = "foo"
constraints {
}
}
结合此控制器:
class FooController {
def foo = {
def foobar = params.foobar
println "foobar=" + foobar
}
}
并提出这些要求:
似乎Grails在第一个点(“。”)处切掉了“foobar”参数。这是故意的吗?如果我想在URL映射中使用包含点的参数,是否有解决办法?
答案 0 :(得分:4)
这可以通过设置......
来解决grails.mime.file.extensions = false
...在Config.groovy。
似乎Grails试图根据文件名后缀在场景后面做一些MIME魔术。
更新: Grails JIRA的一些其他信息。
这是UrlMappingsFilter.java中的违规代码:
if(WebUtils.areFileExtensionsEnabled()) {
String format = WebUtils.getFormatFromURI(uri);
if(format!=null) {
MimeType[] configuredMimes = MimeType.getConfiguredMimeTypes();
// only remove the file extension if its one of the configured mimes in Config.groovy
for (MimeType configuredMime : configuredMimes) {
if (configuredMime.getExtension().equals(format)) {
request.setAttribute(GrailsApplicationAttributes.CONTENT_FORMAT, format);
uri = uri.substring(0, (uri.length() - format.length() - 1));
break;
}
}
}
}
WebUtils.areFileExtensionsEnabled()返回Config.groovy中配置的“grails.mime.file.extensions”设置的值。