Grails message.properties更改未在已部署的应用程序中生效

时间:2012-10-01 10:03:29

标签: caching grails localization internationalization

我在tomcat 7上部署了Grails应用程序时遇到了一个非常烦人的问题

我在我的网站上创建了一个工具,它基本上允许网站管理员编辑message.properties文件,以便他可以根据需要更改某种语言的消息。

所有更改都会成功保存到他编辑的文件中。

在开发中,从STS运行网站(Soring Source Tools Suite;有些像eclips)我只是在浏览器中刷新网站,我立即看到更改,对message.properties文件所做的所有更改所选语言正确生效。

但是在部署的应用程序中(相同的代码同样配置没有错误)管理员做同样的事情,以与以前相同的方式编辑资源,message.properties文件正确保存新值,但是,我不看看浏览器中的变化,除非我重启tomcat,或者经过几个小时后!

我已禁用tomcat 7缓存,但我仍面临同样的问题。 我花了超过4天的谷歌搜索,但所有的结果都与我的问题无关,而且大多数都与hibernate缓存有关。

所以,我的问题只是如下:

我想转到我部署的grails应用程序中的message.properties文件,让我们说message_en.properties,更改让我们说default.welcome.message =欢迎来到default.welcome.message =你好,世界! 然后打开任何浏览器,看看Hello,World!而不是欢迎

提前感谢任何帮助=')

2 个答案:

答案 0 :(得分:1)

正如他们所说,一些重大问题有一个非常简单的答案! 根据我发现的帖子,在我的资源编辑器工具中,我在我的操作中添加了此代码,其中包含bootstarp中的其他一些更改(请参阅答案末尾的链接):

def messageSource
def saveMessageResources={
    .
    .
    .
    //my action logic
    .
    .
    .    
    messageSource.clearCache()
}

它有效:)

参考文献:http://jira.grails.org/browse/GPAPPENGINE-44

答案 1 :(得分:0)

在重新启动之前,已部署的应用程序不会进行更改。为方便起见,仅在开发模式下即时重新进行更改。它被称为“热部署”,因为只应用了更改的部分(在您的情况下为messages.properties)。

如果要在已部署的应用程序中编辑邮件,可以应用替代解决方案 - localisation plugin,将邮件保存在数据库中。