Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jsf 1.2自动生成组件的重复Id_Jsf - Fatal编程技术网

jsf 1.2自动生成组件的重复Id

jsf 1.2自动生成组件的重复Id,jsf,Jsf,我有一个jsf 1.2应用程序,其代码如下: <c:forEach items="#{test.customerList}" var="itm"> <h:panelGroup layout="block"> <h:panelGroup layout="block" style="float:left;"> <h:outputText value="#{itm.customerName}"/>

我有一个jsf 1.2应用程序,其代码如下:

<c:forEach items="#{test.customerList}" var="itm">
    <h:panelGroup layout="block">
        <h:panelGroup layout="block" style="float:left;">
        <h:outputText value="#{itm.customerName}"/>
        </h:panelGroup>

        <h:panelGroup layout="block" style="float:right;">
        <c:forEach items="#{itm.addressTypeList}" var="adrssType">
            <h:graphicImage id="addressTypeIcon" url="/images/services/16x16#{adrssType.contactaddresstypeicon}" alt="#{adrssType.contactaddresstypedesc}" title="#{adrssType.contactaddresstypedesc}" style="margin-top:4px;margin-left:5px;" rendered="#{adrssType.contactaddresstypeid lt 6}"/>
        </c:forEach>
        </h:panelGroup>
    </h:panelGroup>
</c:forEach>

在第二次搜索客户时,我得到了一个“javax.servlet.ServletException:组件的重复Id”异常。我已将问题缩小到以下几行:

<h:graphicImage id="addressTypeIcon"

JSTL标记在视图构建期间运行,此时需要基于JSP/XHTML文件填充JSF组件树。实际上,嵌套在
中的所有JSF组件都会在JSF组件树中重复创建,重复次数与迭代次数相同。因此,当您在
中使用硬编码ID时,它将在组件树中重复,从而导致此异常

当您使用JSF组件而不是JSTL标记处理程序(例如


<c:forEach ... varStatus="loop">
    <h:graphicImage id="addressTypeIcon_#{loop.index}" ... />
</c:forEach>