<;c:forEach>;从JSF 1.2迁移到JSF 2.2后不再被识别

<;c:forEach>;从JSF 1.2迁移到JSF 2.2后不再被识别,jsf,foreach,jstl,jsf-2.2,Jsf,Foreach,Jstl,Jsf 2.2,我正在将我的应用程序从JSF1.2升级到JSF2 我正在尝试下面一个简单的forEach标记,但它没有显示循环中的任何内容 <table id="tab${sectionId}" border="0" cellpadding="0" cellspacing="0" width="100%" class="listingTable" > <c:forEach var="row" ro

我正在将我的应用程序从JSF1.2升级到JSF2

我正在尝试下面一个简单的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>

测试1
所以,用。我无法将支持bean属性指定为组件的ID。我收到错误“java.lang.IllegalArgumentException:组件标识符不能是零长度字符串”


有谁能帮助我理解为什么c:forEach标记不起作用。我有巨大的代码,它使用forEach标记。升级后,如果JSF2不再支持forEach,我将不得不删除它:(

JSTL taglib/XML命名空间URI在JSTL/JSF/Facelets版本之间来回变化

对于JSF1.0的JSP上的JSF,它是

<%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%>

对于JSF on,它是


对于JSTL 1.1+,它是

<xxx xmlns:c="http://java.sun.com/jstl/core">

对于JSTL 1.2+,它是

<xxx xmlns:c="http://java.sun.com/jsp/jstl/core">
<xxx xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">

对于JSTL 1.2+,它是

<xxx xmlns:c="http://java.sun.com/jsp/jstl/core">
<xxx xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">

确保你选对了

另见:

与具体问题无关,至于您实际上最终试图解决的基本功能需求,请考虑以下相关问题:


谢谢BalusC!我最初使用的名称空间是错误的。我使用的是2.2版本,因此根据您的回复更改了名称空间。但是,我遇到了另一个问题-c:forEach中组件的值不再绑定到backingbean。还有什么我遗漏的吗?不客气。如果您有问题,请按询问按钮这个问题。