使用嵌套foreach的动态嵌套列表不起作用

时间:2014-04-07 09:49:02

标签: java jsf primefaces jstl

我使用JSF 2.2,Primefaces 3.5,使用JSTL 1.1标签,以下是代码示例:

<c:forEach items="${backingBean.myObjects}" var="Object" varStatus="objIndex">
    <p:panel id="bo_#{objIndex.index}">
        <p:panelGrid columns="2">
           <h:outputText value="#{Object.className}" />
           <p:commandButton value="Add Field" actionListener="#{backingBean.addField(objIndex.index)}" update="bo_#{objIndex.index}"/>
        </p:panelGrid>
        <p:panelGrid columns="2">
            <c:forEach items="${Object.fields}" var="field" varStatus="fIndex">
                <h:inputText id="fName_#{objIndex.index}_#{fIndex.index}" value="#{field.name}">
                <h:inputText id="fVal_#{objIndex.index}_#{fIndex.index}" value="#{field.value}">
                <p:commandButton value="X" actionListener="#{backingBean.deleteObjectField(objIndex.index, fIndex.index)}" update="bo_#{objIndex.index}"/>
            </c:forEach>
        </p:panelGrid>
    </p:panel>
</c:forEach>

此代码用于显示包含动态字段列表的动态对象列表,用户可以添加字段或删除字段。

问题在于,当用户删除bo_#{objIndex.index}面板内的字段时,我只更新此面板,但下面的所有面板都有重复的字段ID(此ID在以上代码如下fName_#{objIndex.index}_#{fIndex.index}所以它应该是唯一的,

对于前。在fName_1_0的面板中删除字段fname_1_1之后,不会在身份fname_1_2ID bo_1panel bo_0中包含三个字段,而是fName_1_0生成的HTML代码中的1}},fname_1_0fname_1_1)会导致一些问题。

0 个答案:

没有答案
相关问题