Доступ к ключам ResourceBundle, которые содержат точки? - PullRequest
3 голосов
/ 02 августа 2010

Мое приложение JSF2 полностью интернационализировано с использованием ResourceBundle.

Теперь у меня много Javascript-кода, который делает несколько предупреждений и прочее. Там я хотел бы получить доступ к моей ResourceBundle. Я мог бы успешно получить доступ к простым ключам ResourceBundle, как это:

alert("#{bundle.message_email_sent}");

К сожалению, для ключей в моем пакете принято использовать точки . в качестве разделителей для моих ключей, например message.email.sent=E-Mails sent.. Но когда я делаю

alert("#{bundle.message.email.sent}");

JSF пытается получить доступ к «электронной почте», как функция в строке, возвращаемой bundle.message. Как я могу сказать EL-resolver использовать весь «message.email.sent» в качестве ключа?

Я тоже пробовал что-то вроде

alert("#{bundle[\'message.email.sent\']}");

Что также приводит к ошибкам. Есть предложения?

1 Ответ

8 голосов
/ 03 августа 2010

Вам действительно нужно использовать скобки, когда «ключ» содержит символы, которые имеют значение в EL, но вам не нужно экранировать одинарные кавычки, независимо от того, что подсвечиватель синтаксиса JS говорит вам иначе. EL работает, когда работает Java / JSF, а не когда JS.

alert("#{bundle['message.email.sent']}");
...