Получение EL в Javascript-файле, загруженном @ResourceDependency

Я использую @ResourceDependency annotation в JSF-компоненте для добавления Javascript и CSS-файлов на мою JSF-страницу.

В моем Javascript-файле мне нужно сослаться на другой ресурсный файл (файл .swf, который расположен в META-INF/ресурсах, как того требует JSF). Я пытался поместить #{resource['swf:file.swf']} выражение EL в мой javascript код, но оно не разрешилось.

Для exapmle, для следующего JS файла на сервере:

var instance = new JSClass();
instance.setResourceUrl("#{resource['swf:file.swf']}");

Браузер получает:

var instance = new JSClass();
instance.setResourceUrl("#{resource['swf:file.swf']}");

что неправильно.

В то время как когда я помещаю ту же самую EL в CSS-файл, он получает правильное разрешение. Для следующего CSS-файла на сервере:

.instance-css-class {
  background: url("#{resource['swf:file.swf']}")
}

Браузер получает:

.instance-css-class {
  background: url("/webapp/javax.faces.resource/file.swf.jsf?ln=swf")
}

Что именно то, что мне нужно, но в JS-файле.

Очевидно, что я могу использовать CSS как обходной путь (создать элемент DOM, прикрепить к нему класс CSS, а затем прочитать и разобрать требуемое свойство стиля). Но есть ли более элегантный способ его достижения? Это ошибка в библиотеке JSF (я использую Mojarra 2.0.3, с Jboss 6.1), или есть причина такого поведения?

Пожалуйста, имейте в виду, что приведенный выше код является частью библиотеки тегов, поэтому такие обходные пути, как those не могут быть использованы.


Edit - Похоже, что обходной путь CSS невозможен, так как я не вижу способа получить атрибут CSS из CSS-файла. Поэтому любой (рабочий) обходной путь также будет с радостью принят.

7
задан Community 23 May 2017 в 12:34
поделиться