سؤال

بالنظر إلى UrlMapping هذا:

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

جنبا إلى جنب مع وحدة التحكم هذه:

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

ومع هذه الطلبات:

يبدو أن Grails تقطع معلمة "foobar" عند النقطة الأولى (".").هل هذا مقصود؟هل هناك حل بديل إذا كنت أرغب في استخدام المعلمات التي تحتوي على نقاط في تعيينات عناوين URL الخاصة بي؟

هل كانت مفيدة؟

المحلول

ويمكن حل هذه المشكلة عن طريق وضع...

grails.mime.file.extensions = false

...في التكوين. رائع.

يبدو أن Grails تحاول القيام ببعض سحر MIME خلف الكواليس بناءً على لاحقة اسم الملف.

محدث: بعض المعلومات الإضافية من جريلز جيرا.

هذا هو الكود المخالف في 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() بإرجاع قيمة الإعداد "grails.mime.file.extensions" الذي تم تكوينه في Config.groovy.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top