国际化问题 eval 执行java字符串
吸尘器 2020-01-14 02:38:44 项目比较老,还是ssh+jsp框架,这个不是重点,主要的是遇到了个国际化的问题,希望路过各位能提供个解决方法。
问题如下:
例如:有个系统用户登录日志要做国际化。
当有一个用户登录系统,系统会记录:{用户}在{什么时间}登录了系统XXX。
国际化配置文件
zh_CN:msg0001={0}在{1}登录了系统XXX。
en_US:msg0001={0} logged into XXX system at {1}
国际化处理我用了个自己定义的类,后台调用方法是
new SimpleAppMessage("msg0001_1", "bundle_message", new Object[]{"张三","2020-01-01 12:00:00"}).getMesg()
这句话如果在保存到数据库的时候就进行国际化处理,那么在登录日志列表查询显示的就有的是中文(当登录用户选择的是中文),有的是英文(当登录用户选择的是英文)。
但如果我插入数据库的时候插入
"new SimpleAppMessage(\"msg0001_1\",\"bundle_message\", new Object[]{\"张三\",\"2020-01-01 12:00:00\"}).getMesg()"
或者
"<%=new SimpleAppMessage(\"msg0001_1\",\"bundle_message\", new Object[]{\"张三\",\"2020-01-01 12:00:00\"}).getMesg()%>"
页面会原样这样输出,不会执行(不知道路过的各位大哥有没有jsp中执行java字符串的方法)。
我也想过用java的执行字符串的Jexl,但Jexl不支持 new SimpleAppMessage这种new的方式声明对象,跟不会支持new Object。