我正在将我的应用程序从JSF 1.2升级到JSF 2。
我正在尝试使用以下简单的forEach标记,但它没有在循环中显示任何内容。
<table
id="tab${sectionId}"
border="0"
cellpadding="0"
cellspacing="0"
width="100%"
class="listingTable"
>
<c:forEach
var="row"
rowStatus="index"
items="#{bean.department.userActivities}"
>
<tr>
<td>
test
</td>
</tr>
</c:forEach>
</table>
价值测试未显示。 c:forEach实现是否已更改?
我尝试更换但有其他问题。它正在渲染内部的内容。但是如果我有一个组件,我无法将支持bean值指定为组件的ID。示例如下
<table
id="tab${sectionId}"
border="0"
class="listingTable"
>
<t:dataList
var="row"
rowIndexVar="index"
value="#{bean.department.userActivities}"
>
<h:column>
<h:outputText id="#{row.activityCode}">test1</h:outputText>
</h:column>
</t:dataList>
</table>
所以,有了。我无法将支持bean属性指定为组件的ID。我收到错误&#34; java.lang.IllegalArgumentException:组件标识符不能是零长度字符串&#34;
任何人都可以帮助我理解为什么c:forEach标签不起作用。我有很多代码使用forEach标记。升级后,如果在JSF2中不再支持,我将不得不删除每个forEach :(
答案 0 :(得分:2)
JSTL taglib / XML名称空间URI已经在JSTL / JSF / Facelets版本中发生了变化。
对于使用JSTL 1.0的JSP上的JSF,它是
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
对于JSP with JSTL 1.1+上的JSF,它是
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
对于使用JSTL 1.1+的JSF 1.x on Facelets,它是
<xxx xmlns:c="http://java.sun.com/jstl/core">
对于JSTL 1.2+的JSF 2.x on Facelets,它是
<xxx xmlns:c="http://java.sun.com/jsp/jstl/core">
对于JSTL 1.2+的JSF 2.2+ on Facelets,它是
<xxx xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
确保选择正确的。
无关具体问题,关于您实际上最终试图解决的基本功能要求,请提出以下相关问题: