Frage

In Anbetracht dieser UrlMapping:

"/foo/$foobar" {
    controller = "foo"
    action = "foo"
    constraints {
    }
}

Mit diesem Controller kombiniert:

class FooController {
    def foo = {
        def foobar = params.foobar
        println "foobar=" + foobar
    }
}

Und mit diesen Anfragen:

Es scheint, wie Grails die "foobar" Parameter am ersten Punkt schneidet ( ""). Ist das Absicht? Gibt es eine Behelfslösung, wenn ich will Parameter verwenden Punkte in meiner URL-Zuordnungen enthalten?

War es hilfreich?

Lösung

Dies kann durch Einstellung gelöst werden ...

grails.mime.file.extensions = false

... in Config.groovy.

Es scheint, wie Grails versucht, eine MIME-Magie hinter den Kulissen zu tun, basierend auf dem Dateinamen-Suffix.

Aktualisiert: Einige zusätzliche Informationen aus dem Grails JIRA .

Dies ist der säumige Code in 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 () gibt den Wert des "grails.mime.file.extensions" in Config.groovy konfiguriert-Einstellung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top