berg369 2009-08-24 08:14 采纳率: 85.7%
浏览 224
已采纳

从任何类中都能获取request中的属性,只能用线程局部变量吗?

web应用中实现国际化,基于request.getLocale获取请求者的国家语言,所以很多类中都会用到:
ResourceBundle messages = ResourceBundle.getBundle("message",locale);
来获取适当的资源文件,因此需要在所有类中都能取到request中的locale属性。

我可以创建一个线程局部变量来存放它,如:
public class I18nUnit {
private static final ThreadLocal locale = new ThreadLocal();
......
public static String getLocale() {
if (locale.get() == null) {
return "";
}
return (String) locale.get();
}
}
在servlet的doService方法开头设置这个变量,然后在任意类中用I18nUnit.getLocale()获取,能够实现。

但我觉得这个办法挺另类挺绕的,应该有更容易的获取方式吧?
[b]问题补充:[/b]
lovewhzlq:那么在任意类中如何获取session呢?我原来都是request.getSession(),任意类中如果取不到request,session也得不到啊
[b]问题补充:[/b]
bohemia:
有些普通类中要抛出异常,异常消息需要是国际化的,抛出后是要展示给用户看的,您认为有其它方法可以解决吗?

  • 写回答

5条回答 默认 最新

  • bohemia 2009-08-24 12:42
    关注

    [quote]有些普通类中要抛出异常,异常消息需要是国际化的,抛出后是要展示给用户看的,您认为有其它方法可以解决吗? [/quote]
    如jansel所说.
    及时有异常,也只是在Exception对象中包含了要国际化资源的Key.
    到了错误页面,或者Action部分,一样可以国际化.

    应该不一定要把异常中的信息,直接写成国际化处理后的明文吧?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R