1

如果您在 URL 映射中使用语言前缀,例如

/$lang/$controller/$action?/$id?

并且您生成的 URL 包含除 lang 参数之外的参数,您将获得以下 URL,用于附加参数,例如偏移量:

/book/list?offset=10&lang=en

但这打破了我的映射。相反,我希望 URL 看起来像这样:

/en/book/list?offset=10

我怎样才能做到这一点?

4

1 回答 1

0

创建以下 bean(假设您的 lang 参数称为“lang”):

class LangAwareUrlMappingsHolderFactoryBean extends UrlMappingsHolderFactoryBean {

    @Override
    public UrlMappingsHolder getObject() throws Exception {
        def obj = super.object
        obj.DEFAULT_CONTROLLER_PARAMS = [UrlMapping.CONTROLLER, UrlMapping.ACTION,     "lang"] as Set
        obj
    }   
}

并调整resources.groovy

"org.grails.internal.URL_MAPPINGS_HOLDER"(LangAwareUrlMappingsHolderFactoryBean) { bean ->
    bean.lazyInit = true
}

你会得到

/en/book/list?offset=10

代替

/book/list?offset=10&lang=en
于 2013-05-08T16:27:53.667 回答