Доступ к ресурсу JSF из javascript

Я хочу получить доступ к ресурсам JSF (под WebPages/resources/img) из функции javascript, например:

function hideSpinner() {
    arguments[i].poster = './img/sppiner.png';
}

Я пробовал arguments[i].poster = "${resource['img/sppiner.png']}"; и arguments[i].poster = '${resource[\'img/sppiner.png\']}';, но он не работает.

Что я могу сделать?

Ответ 1

EL-выражения оцениваются только в файлах Facelets (XHTML) и в файлах CSS, загружаемых через <h:outputStylesheet>. Они не оцениваются в JS файлах, загружаемых через <h:outputScript>.

Вам в основном нужно отобразить встроенную script, которая устанавливает (глобальную) переменную JavaScript, которую должен, по очереди, ссылаться на JS файл.

<h:outputScript>var spinnerImage = "${resource['img/sppiner.png']}";</h:outputScript>
<h:outputScript name="js/some.js" />
arguments[i].poster = spinnerImage;

Однако гораздо более чистым является установка изображения в качестве фонового изображения CSS, связанного с определенным классом стиля CSS, а затем просто чтобы JavaScript задал этот класс стиля на нужном элементе. Как сказано, вы можете использовать выражения EL в файлах CSS, загруженных через <h:outputStylesheet>. См. Также a.o. Как ссылаться на ресурс изображений JSF как URL-адрес фонового рисунка CSS.