节奏可以用作单例或实例化为普通对象。目前,我在ServletInit()
方法的webapp中实例化了一次。(这与使用单例几乎相同,因为我只创建了一次)
现在,我需要向网站添加i18n支持,并且需要在渲染之前动态设置语言。
我可以这样做:
engine.setLocale(userLocale);
engine.render(template,arguments);
我假设如果我使用一个singleton(或在servlet中创建的单个实例),那么我可能会在两个语句之间获得竞争条件。
首先,在最新版的rythm中,您应该致电engine.prepare(Locale)
,而不是engine.setLocale(Locale)
;
现在回答您的问题:
- 这是正确的还是没有比赛条件?
它不会导致竞争状况,因为它用于ThreadLocal
存储渲染设置的代码内部
- 我应该为每个请求创建一个Rythm实例吗?
绝对没有
- 是否有另一种方法可以更改每个渲染的语言而不更改引擎状态?
语言和语言环境不是引擎级别的状态,它们是每个请求的状态。但是,可以在引擎级别配置默认语言和语言环境
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句