在我的Java Web应用程序中,我想为当前请求设置区域设置,并在请求期间使其在整个应用程序中可用。这意味着无论代码所在的类或方法如何,语言环境都可用。我也不想从客户端的浏览器中检索语言环境。它是从内部数据库中检索的。
无法使用Locale.setDefault,因为它适用于所有请求。必须为每个客户端请求设置区域设置,具体取决于为发出请求的客户端存储的区域设置。
单身人士不会工作,因为这会使所有请求都相同。
一种解决方案是在调用doGet或doPost时简单地检索语言环境,并将其从一种方法传递到另一种方法。但这真的很难看。
更好的解决方案是,如果有办法将语言环境附加到当前请求对象,并以某种方式能够在应用程序内的任何位置访问请求对象的该实例。我不知道这是否可能。
答案 0 :(得分:1)
我看到你可以通过三种方式实现这个目标
ThreadLocal
。无论您分配什么,都将受限并且对特定线程(请求)有效。一定要清理。 https://docs.oracle.com/javase/7/docs/api/java/lang/ThreadLocal.html