c:foreach p:datatable 嵌套刷新问题
环境为:jsf2.1 primefaces5 java 7 tomcat 7
<p:accordionPanel id="clientList" multiple="true" widgetVar="clientList"
styleClass="autoHei" activeIndex="#{clientBB.activeTabNumStr}">
<ui:repeat value="#{clientBB.clientsMap}" var="clientList">
<p:tab title="#{clientList.key.dataName}">
<p:dataTable var="client" value="#{clientList.value}"
emptyMessage="没有记录" selectionMode="single"
selection="#{clientBB.currentBO}" rowKey="#{client}">
<f:facet name="header">
</f:facet>
<p:ajax event="rowSelect" listener="#{clientBB.onRowSelect}"
update=":leftForm,:rightForm" />
<p:column headerText="客户名称">
<h:outputText value="#{client.title}" />
</p:column>
<p:column headerText="创建时间">
<h:outputText value="#{client.createTime}">
<f:convertDateTime pattern="yyyy-MM-dd" timeZone="GMT+8" />
</h:outputText>
</p:column>
</p:dataTable>
</p:tab>
</c:forEach>
</p:accordionPanel>
以上代码在更新其中一个属性刷新时出现修改的那个分组无法显示的问题
后面代码改成如下:
<p:accordionPanel id="clientList" multiple="true"
widgetVar="clientList" value="#{clientBB.areaNameList}"
var="areaName" styleClass="autoHei"
activeIndex="#{clientBB.activeTabNumStr}">
<p:tab title="#{areaName}">
<p:dataTable var="client" value="#{clientBB.clientsMap[areaName]}"
emptyMessage="没有记录" selectionMode="single"
selection="#{clientBB.currentBO}" rowKey="#{client}">
<f:facet name="header">
</f:facet>
<p:ajax event="rowSelect" listener="#{clientBB.onRowSelect}"
update=":leftForm,:rightForm" />
<p:column headerText="客户名称">
<h:outputText value="#{client.title}" />
</p:column>
<p:column headerText="创建时间">
<h:outputText value="#{client.createTime}">
<f:convertDateTime pattern="yyyy-MM-dd" timeZone="GMT+8" />
</h:outputText>
</p:column>
</p:dataTable>
</p:tab>
</p:accordionPanel>
用了p:accordionPanel 标签中内置的iterator就不会出现这个问题了
原来的:
2.修改后错误的情况
3、正确的情况