【发布时间】:2015-03-31 18:32:43
【问题描述】:
在 Grails 本地化插件 documentation 中,它说:
如果您以 war 文件的形式分发完成的应用程序,那么除非目标应用程序服务器在安装时解压缩 war 文件,否则本地化插件将无法自动加载(或随后“导入”)来自在战争文件中。
为了使用war重新加载所有消息更新,我在BootStrap.groovy中使用了以下代码。
import org.grails.plugins.localization.Localization
class BootStrap {
def init = { servletContext ->
Localization.reload()
}
}
这段代码确实帮助我,每当应用程序部署到 Tomcat 服务器时,都会应用消息更新。但是随着越来越多的版本被部署,本地化表的 id 号会自动增加。
所以我尝试在我的代码中使用“截断表”来解决问题。在BootStrap.groovy:
import org.grails.plugins.localization.Localization
class BootStrap {
def sessionFactory
def init = { servletContext ->
sessionFactory.getCurrentSession().createSQLQuery('truncate table localization').executeUpdate()
Localization.load()
}
}
使用此代码会导致 run-app 失败,因为有时,truncate table 发生在加载过程的中间,而不是之前!
【问题讨论】:
标签: grails