0

我正在尝试使用为 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 表达式,似乎它们没有被评估,我假设是因为我像这样直接引用它们。

感谢您的任何见解。

4

1 回答 1

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是错误的。仔细阅读JSF 资源库是干什么用的,应该如何使用?

于 2015-06-09T04:39:24.507 回答