Я использую аннотацию @ResourceDependency
в компоненте JSF для добавления файлов Javascript и CSS на мою страницу JSF.
В моем файле Javascript мне нужно сослаться на другой файл ресурсов (файл .swf, который находится в META-INF / resources, как того требует JSF). Я пытался вставить выражение #{resource['swf:file.swf']}
EL в свой код JavaScript, но оно не было решено.
Например, для следующего 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), или есть причина для такого поведения?
Обратите внимание, что приведенный выше код является частью библиотеки тегов, поэтому обходные пути, такие как эти , использовать нельзя.
Редактировать - Похоже, что обходной путь CSS невозможен, так как я не вижу способа получить атрибут CSS из файла CSS. Поэтому любой (рабочий) обходной путь также будет с радостью принят.