如果您在 URL 映射中使用语言前缀,例如
/$lang/$controller/$action?/$id?
并且您生成的 URL 包含除 lang 参数之外的参数,您将获得以下 URL,用于附加参数,例如偏移量:
/book/list?offset=10&lang=en
但这打破了我的映射。相反,我希望 URL 看起来像这样:
/en/book/list?offset=10
我怎样才能做到这一点?
如果您在 URL 映射中使用语言前缀,例如
/$lang/$controller/$action?/$id?
并且您生成的 URL 包含除 lang 参数之外的参数,您将获得以下 URL,用于附加参数,例如偏移量:
/book/list?offset=10&lang=en
但这打破了我的映射。相反,我希望 URL 看起来像这样:
/en/book/list?offset=10
我怎样才能做到这一点?
创建以下 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