c:foreach p:datatable 嵌套刷新问题【备忘】

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就不会出现这个问题了


原来的:

c:foreach p:datatable 嵌套刷新问题【备忘】_第1张图片

2.修改后错误的情况

c:foreach p:datatable 嵌套刷新问题【备忘】_第2张图片

3、正确的情况


你可能感兴趣的:(JSF,primefaces,cforEach,pdatatable)