“。”を含むパラメーター値を持つGrails UrlMappings。
-
03-07-2019 - |
質問
このUrlMappingを指定:
"/foo/$foobar" {
controller = "foo"
action = "foo"
constraints {
}
}
このコントローラーとの組み合わせ:
class FooController {
def foo = {
def foobar = params.foobar
println "foobar=" + foobar
}
}
これらのリクエストでは:
- http:// localhost:8080 / app / foo / example.com 出力を" foobar = example"
- http:// localhost:8080 / app / foo / examplecom 出力&quot ; foobar = examplecom"
Grailsは" foobar"をカットしたようです。最初のドットのパラメータ("。")。これは意図的なものですか? URLマッピングにドットを含むパラメーターを使用する場合の回避策はありますか?
解決
これは...を設定することで解決できます...
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()は、「grails.mime.file.extensions」の値を返します。 Config.groovyで構成された設定。
所属していません StackOverflow