如果您在URL映射中使用语言前缀,例如
/$lang/$controller/$action?/$id?
并且您生成的URL除了lang参数之外还包含参数,您将获得以下URL,以获取其他参数,例如offset:
/book/list?offset=10&lang=en
但这打破了我的映射。相反,我希望URL看起来像这样:
/en/book/list?offset=10
我怎样才能做到这一点?
答案 0 :(得分:0)
创建以下bean(假设你的lang param被称为“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