Question

Étant donné ce UrlMapping:

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

Combiné avec ce contrôleur:

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

Et avec ces demandes:

Il semble que Grails coupe le "foobar". paramètre au premier point ("."). Est-ce intentionnel? Existe-t-il une solution de contournement si je souhaite utiliser des paramètres contenant des points dans mes mappages d'URL?

Était-ce utile?

La solution

Ceci peut être résolu en définissant ...

grails.mime.file.extensions = false

... dans Config.groovy.

Il semble que Grails tente de faire de la magie MIME derrière la scène en se basant sur le suffixe du nom de fichier.

Mise à jour: Quelques informations supplémentaires sur le Grails JIRA .

Il s'agit du code incriminé dans 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 () renvoie la valeur de "grails.mime.file.extensions". paramètre configuré dans Config.groovy.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top