访问包含点的ResourceBundle键?

Ing*_*her 3 jsf el jsf-2

我的JSF2应用程序使用ResourceBundle完全国际化.

现在我有很多Javascript代码,它会做一些警报和事情.在那里,我想访问我的ResourceBundle.我可以像这样成功访问简单的ResourceBundle键:

alert("#{bundle.message_email_sent}");
Run Code Online (Sandbox Code Playgroud)

不幸的是,我在我的捆绑中的键的惯例是使用点.例如,作为我的钥匙的分隔符message.email.sent=E-Mails sent..但是,当我这样做

alert("#{bundle.message.email.sent}");
Run Code Online (Sandbox Code Playgroud)

JSF尝试像bundle.message返回的字符串上的函数一样访问"email".我如何告诉EL解析器使用整个"message.email.sent"作为密钥?

我也试过像

alert("#{bundle[\'message.email.sent\']}");
Run Code Online (Sandbox Code Playgroud)

这也会导致错误.有什么建议?

Bal*_*usC 8

你确实需要使用括号表示法,当'key'包含在EL中有意义的字符时,你不需要逃避单引号,无论JS语法高亮显示器告诉你什么.EL在Java/JSF运行时运行,而不是在JS运行时运行.

alert("#{bundle['message.email.sent']}");
Run Code Online (Sandbox Code Playgroud)