【问题标题】:<pe:fluidGrid> not updating var in second iteration of <p:dataList><pe:fluidGrid> 未在 <p:dataList> 的第二次迭代中更新 var
【发布时间】:2015-06-10 12:28:03
【问题描述】:

我在p:dataList 中有一个pe:fluidGrid,它从哈希图中读取元素。 由于这篇文章,我曾经使用 ui:repeat 而不是 p:dataList butt 更改了它:<h:form> within <ui:repeat> not entirely working, only the last <h:form> is processed

我现在的问题是:内部的fluidGrid 没有正确更新它的var data

<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>

屏幕截图中的每个面板都是在 p:dataList 中创建的。如您所见,以红色突出显示,第二个面板从第一个面板的最后一个值开始。由于随后发生的索引超出范围异常(尝试访问大小为 2 的列表中的第三个索引),第二个面板不完整。

【问题讨论】:

    标签: primefaces jsf-2.2 primefaces-extensions


    【解决方案1】:

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

    任何人都知道其中的区别是什么?

    【讨论】:

      猜你喜欢
      • 2015-08-26
      • 2012-06-03
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      • 2023-04-02
      相关资源
      最近更新 更多