我已经实现了一个自定义 ActionMapper,它从 URI(URI 本身,而不是请求参数)获取语言环境。在 ActionMapper.getMapping() 中,如何设置当前操作的区域设置?
以下是我考虑过的一些想法:
- ActionContext.getCurrent().setLocale()。不幸的是,似乎在调用操作时创建了一个新的 ActionContext,并且语言环境被重置为默认值。
- 设置参数request_locale,将被i18n拦截器处理。不幸的是,i18n 拦截器坚持不仅要为当前操作设置区域设置,还要为当前会话设置区域设置,这会引发异常,因为我的应用程序没有启用会话。
- 通过实现 setLocale() 设置参数并在操作本身中对其进行处理。直截了当,但这意味着没有一个拦截器可以访问语言环境。
- 设置一个参数并编写一个拦截器(基本上做与 i18n 拦截器相同的事情,而不假设会话支持)。对于这样一个简单的问题似乎有点矫枉过正,更不用说重新发明轮子了。
有什么简单的方法可以实现这一目标吗?