http://localhost:8080/app/?lang=EN
-----------------------------------------------
class Company {
String nameJp
String nameEn
static constraints = {
}
String toString(){
if(lang=='EN')
return nameEn ? nameEn:nameJp
else
return nameJp
}
}
如何检查域类中的当前语言
答案 0 :(得分:2)
您可以尝试LocaleContextHolder
或将当前的区域设置作为参数传递:
String toString() {
return toString(LocaleContextHolder.getLocale())
}
//get the possibility of passing a Locale (better also for tests)
String toString(Locale locale) {
if(locale.language == 'en') {
return nameEn ? nameEn:nameJp
} else {
return nameJp
}
}
但这更像是一个表示需要而不是Domain Class需要,所以你可以创建一个TagLib并在那里处理它。
class CompanyTagLib {
static namespace = "comp"
def name = { attrs ->
Locale locale = attrs.locale ? attrs.remove('locale') : ResquestContextUtil.getLocale(request)
Company company = attrs.remove('company')
...
}
}
答案 1 :(得分:0)
不确定您是否可以在域类中访问它,但在控制器中,您可以从会话
获取它session[SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME]