Pregunta

Dado este UrlMapping:

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

Combinado con este controlador:

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

Y con estas solicitudes:

Parece que Grails corta el '' foobar '' parámetro en el primer punto (". "). ¿Es esto intencional? ¿Hay alguna solución si quiero usar parámetros que contienen puntos en mis asignaciones de URL?

¿Fue útil?

Solución

Esto se puede resolver configurando ...

grails.mime.file.extensions = false

... en Config.groovy.

Parece que Grails está tratando de hacer algo de magia MIME detrás de escena basándose en el sufijo del nombre del archivo.

Actualizado: Alguna información adicional de Grails JIRA .

Este es el código ofensivo en 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 () devuelve el valor de " grails.mime.file.extensions " configuración configurada en Config.groovy.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top