在Grails本地化插件documentation中,它说:
如果您以war文件的形式分发已完成的应用程序,那么除非目标应用程序服务器在安装时解压缩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
发生在加载过程的中间,而不是之前!
答案 0 :(得分:0)
您是否尝试将其作为线程执行并强制等待该过程的结束?
答案 1 :(得分:0)
本地化插件有一个LocalizationsBootStrap.groovy
。在BootStrap.groovy
中编写代码会导致两个BootStrap文件之间的争用。
我们可以在BootStrap.groovy
中不执行任何操作,但在LocalizationsBootStrap.groovy
下创建{<1>} 覆盖 :
conf