문제
이 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 출력 "foobar = examplecom"을 제공하십시오.
Grails가 첫 번째 점 ( ".")에서 "foobar"매개 변수를 자르는 것처럼 보입니다. 이것은 의도적입니까? URL 매핑에 도트가 포함 된 매개 변수를 사용하려면 해결 방법이 있습니까?
해결책
설정으로 해결할 수 있습니다 ...
grails.mime.file.extensions = false
... config.groovy에서.
Grails가 파일 이름 접미사를 기반으로 장면 뒤에서 Mime Magic을 만들려고하는 것처럼 보입니다.
업데이트 : 몇 가지 추가 정보 지라를 성배합니다.
이것은 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"의 값을 반환합니다.
제휴하지 않습니다 StackOverflow