在非页面入口处理多语言环境
概述
在 HAP 中,从浏览器打开的页面或者调用的 Rest API 都必须经过控制器层,而控制器层可以很容易地获取 HttpServletRequest
对象,进而构造 IRequest
对象来存储环境上下文信息,这里就包括当前的语言环境。
举例说明:
1 | public ResponseData processRequest(HttpServletRequest request) { |
因此在控制器层获取当前设置的语言环境是轻而易举的事情。不过,HAP 开发过程中会有很多其他的场景不会将控制器作为入口进入。在任务管理
、定时任务
、工作流
和UReport2报表
中,核心程序的入口都是通过向 Spring 注册一些通用的服务组件(@Component
) 并实现特定的接口来实现的。因此这种场景下,如何构建一个正确的 IRequest 对象就成为一个很有技巧性的问题了。