【发布时间】:2015-06-08 23:17:48
【问题描述】:
我正在尝试使用为 ArrayList 的每个元素输出样式表链接。此代码不产生任何结果:
<ui:repeat value="#{includer.css}" var="ss">
<h:outputStylesheet name="#{ss}" library="css" />
</ui:repeat>
但是,如果我将 ArrayList 中的字符串更改为完整路径,并将 h:outputStylesheet 替换为纯 html,例如:
<ui:repeat value="#{includer.css}" var="ss">
<link type="text/css" rel="stylesheet" href="${ss}" />
</ui:repeat>
然后它按预期工作。问题是我在一些 css 文件中有一些 EL 表达式,似乎它们没有被评估,我假设是因为我像这样直接引用它们。
感谢您的任何见解。
【问题讨论】:
-
无论您如何生成 HTML,样式表中的 EL 表达式都不会被计算。样式表由浏览器直接加载,无需经过任何会评估 EL 的操作。
-
@EJP:实际上,它们会存在,但只有在通过
<h:outputStylesheet>加载时才会出现(并且您在将 EL 表达式添加到已加载的样式表后重新启动了 webapp;这就是在应用程序范围内记住的以每个样式表为基础)。 -
@BalusC 怎么样?什么时候生成 HTML 链接元素?
-
@EJP:主要是为了在 URL 选择器中支持
#{resource},例如背景图像和字体。另见 a.o. stackoverflow.com/questions/6925733/…
标签: jsf facelets jsf-2.2 uirepeat outputstylesheet