Primefaces <;pe:fluidGrid>;在<;的第二次迭代中未更新var;p:dataList>;

Primefaces <;pe:fluidGrid>;在<;的第二次迭代中未更新var;p:dataList>;,primefaces,jsf-2.2,primefaces-extensions,Primefaces,Jsf 2.2,Primefaces Extensions,我在p:dataList中有一个pe:fluidGrid,它从hashmap中读取元素。 我曾经使用了ui:repeat,而不是p:dataList,但由于这篇帖子,我改变了它: 我现在的问题是:内部fluidGrid没有正确更新其var数据 <p:dataList var="pdi" value="#{FormGenerator.formItems.keySet()}" id="all" varStatus="loop" type="none" > <p:p

我在
p:dataList
中有一个
pe:fluidGrid
,它从hashmap中读取元素。 我曾经使用了
ui:repeat
,而不是p:dataList,但由于这篇帖子,我改变了它:

我现在的问题是:内部fluidGrid没有正确更新其
var数据

<p:dataList var="pdi" value="#{FormGenerator.formItems.keySet()}" id="all" varStatus="loop" type="none" >

        <p:panel id="panel" header="#{pdi.getFragmentDefinition().getFragmentName()}" style="margin-bottom:1em; width:100%;" >

            <pe:fluidGrid  id="fluidGrid" value="#{FormGenerator.formItems[pdi]}" var="data"
                           hGutter="20" vGutter="10"  widgetVar="fluidGridWdgt_#{loop.index}" >

                #{data.id} #{data.label}
                <pe:fluidGridItem type="stringValue"  id="txt_">
                    <div class="dynaFormLabel">
                        #{data.id}
                        <p:outputLabel for="txt" value="#{FormGenerator.formItems[pdi].get(data.id).getData().label} _ #{data.id}"/>
                    </div>
                    <p:inputText id="txt" value="#{FormGenerator.formItems[pdi].get(data.id).getData().value}"/>
                </pe:fluidGridItem>
                <pe:fluidGridItem type="integerValue" id="int_">
                    <div class="dynaFormLabel">
                        #{data.id}
                        <p:outputLabel for="int" value="#{FormGenerator.formItems[pdi].get(data.id).getData().label} _ #{data.id}"/>
                    </div>
                    <p:spinner id="int" value="#{FormGenerator.formItems[pdi].get(data.id).getData().value}" />
                </pe:fluidGridItem>
                <pe:fluidGridItem type="dateValue" id="cal_">
                    <div class="dynaFormLabel">
                        #{data.id}
                        <p:outputLabel for="cal" value="#{FormGenerator.formItems[pdi].get(data.id).getData().label} _ #{data.id}"/>
                    </div>
                    <p:calendar id="cal" value="#{FormGenerator.formItems[pdi].get(data.id).getData().value}" showOn="button"/>

                </pe:fluidGridItem>

            </pe:fluidGrid>
        </p:panel>
    </p:dataList>

#{data.id}{data.label}
#{data.id}
#{data.id}
#{data.id}


屏幕截图中的每个面板都是在p:dataList中创建的。正如您可以看到以红色突出显示的一样,第二个面板从第一个面板的最后一个值开始。第二个面板不完整,导致出现索引越界异常(尝试访问大小为2的列表中的第三个索引)

显然我所要做的就是改变
{FormGenerator.formItems[pdi].get(data.id).getData().label}
to
{FormGenerator.formItems[pdi][data.id].getData().label}

有人对两者的区别有什么见解吗