【问题标题】:Grails message.properties changes not taking effect in deployed applicationGrails message.properties 更改在部署的应用程序中未生效
【发布时间】:2012-10-01 10:03:28
【问题描述】:

我在 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=Welcome to default.welcome.message=Hello, World! 然后打开任何浏览器,看到 Hello, World!而不是欢迎

在此先感谢您的帮助 =')

【问题讨论】:

  • 我刚刚在我的应用程序上测试了热重新部署,结果证明即使没有clearCache() o_O Grails 2.2.0, Tomcat 7 也能正常工作。

标签: caching grails localization internationalization


【解决方案1】:

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

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

它成功了:)

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      • 1970-01-01
      • 2013-06-01
      相关资源
      最近更新 更多