Grails,如何在域类中访问当前的?lang

时间:2013-08-15 07:13:07

标签: grails

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
  }

}

如何检查域类中的当前语言

2 个答案:

答案 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]