【问题标题】:Grails UrlMappings with parameter values containing "."参数值包含“.”的 Grails UrlMappings
【发布时间】:2010-10-11 13:17:55
【问题描述】:

鉴于此 UrlMapping:

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

结合这个控制器:

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

还有这些要求:

似乎 Grails 在第一个点(“.”)处删除了“foobar”参数。这是故意的吗?如果我想在我的 URL 映射中使用包含点的参数,是否有解决方法?

【问题讨论】:

    标签: grails friendly-url url-mapping


    【解决方案1】:

    这可以通过设置来解决...

    grails.mime.file.extensions = false
    

    ...在 Config.groovy 中。

    似乎 Grails 正试图根据文件名后缀在幕后做一些 MIME 魔术。

    更新:来自Grails JIRA 的一些附加信息。

    这是 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”设置的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多