2009-03-05 10 views
1

dieses UrlMapping Gegeben:Grails UrlMappings mit Parameterwerten, die "."

mit diesem Controller kombiniert:

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

Und mit diesen Anfragen:

Es scheint, als ob Grails den "foobar" Parameter am ersten Punkt (".") Schneidet. Ist das beabsichtigt? Gibt es einen Workaround, wenn ich in meinen URL-Mappings Parameter mit Punkten verwenden möchte?

Antwort

4

Dies kann durch Setzen ...

grails.mime.file.extensions = false 

... in Config.groovy gelöst werden.

Es scheint, als ob Grails versucht, etwas MIME-Magie hinter der Szene basierend auf dem Dateinamen Suffix zu tun.

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

Dies ist der betreffende 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.