我正在尝试使用为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表达式,似乎它们没有被评估,我假设因为我直接引用它们。
感谢您的任何见解。
答案 0 :(得分:1)
<h:outputStylesheet>
(和<h:outputScript>
)需要在视图构建期间出现,以便让JSF资源管理正确地获取它们。但是,<ui:repeat>
仅在视图渲染时间内运行,JSF执行重定位操作(移动到头部或主体的底部等)为时已晚。
将其替换为<c:forEach>
。
<c:forEach items="#{includer.css}" var="ss">
<h:outputStylesheet name="#{ss}" library="css" />
</c:forEach>
无关,库名css
错误。仔细阅读What is the JSF resource library for and how should it be used?