Я использую @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-файла. Поэтому любой (рабочий) обходной путь также будет с радостью принят.