从 javascript 访问 JSF 资源

Access JSF resource from javascript

我想从 javascript 函数访问 JSF 资源(在 WebPages/resources/img 下),例如:

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

我已经尝试了 arguments[i].poster = "${resource['img/sppiner.png']}";arguments[i].poster = '${resource[\'img/sppiner.png\']}'; 但它不起作用..

我能做什么?

EL 表达式仅在 Facelets (XHTML) 文件和通过 <h:outputStylesheet> 加载的 CSS 文件中计算。它们不会在通过 <h:outputScript>.

加载的 JS 文件中进行评估

您基本上需要呈现一个内联脚本,该脚本设置一个(全局)JavaScript 变量,而 JS 文件应该引用该变量。

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

然而,更简洁的方法是将图像设置为与特定 CSS 样式相关联的 CSS 背景图像 class 然后让 JavaScript 设置它在所需元素上添加样式 class。如前所述,您可以在通过 <h:outputStylesheet> 加载的 CSS 文件中使用 EL 表达式。另见 a.o。 How to reference JSF image resource as CSS background image url.