我已经实现了一个自定义的ActionMapper,它从URI(URI本身,而不是请求参数)获取区域设置。从ActionMapper.getMapping()中,如何设置当前操作的区域设置?如何设置自定义的区域设置Struts 2 ActionMapper
这里有一些想法,我认为:
- ActionContext.getCurrent()的setLocale()。不幸的是,当动作被调用时,似乎创建了新的ActionContext,并且区域设置被重置为默认值。
- 设置参数request_locale,由i18n拦截器处理。不幸的是,i18n拦截器坚持不仅为当前操作设置语言环境,而且还为当前会话设置语言环境,这会引发异常,因为会话没有为我的应用程序启用。
- 通过实现setLocale(),设置一个参数并在动作本身中对其进行处理。直截了当,但这意味着没有任何拦截器可以访问区域设置。
- 设置一个参数并编写一个拦截器(基本上和i18n拦截器完全相同,而不需要假设会话支持)。对于这样一个简单的问题似乎过度杀伤,更不用说重新发明轮子。
有没有简单的方法来实现这一目标?
如果您需要在您的拦截器的语言环境,我想你坚持重新发明用自定义的i18n拦截轮。令我惊讶的是ActionContext被重新创建 - 我想你的第一个想法也会起作用。 – Pat 2009-08-19 01:08:53