在我的支持bean中,我有一个提供列表内容的方法,我使用ui:repeat
标记在JSF中显示。
public List<ContentViewItem> getContentViewItemList() {
setContentViewItemList(contentViewItemService.getContentViewItems("" + sessionBean.getSelectedProject().getId(), sessionBean.getLanguageCode()));
return this.contentViewItemList;
}
列表的内容会从应用程序的其他部分更改,因此我希望使用p:poll
来频繁更新列表。
<h:form>
<h:panelGroup id="commentlist">
<ui:repeat var="contentItem" value="#{contentItemBean.contentViewItemList}">
<li class="list-item-elements type #{contentItem.contentType == 'Partition' ? 'border-left-orange' : contentItem.contentType == 'Chunk' ? 'border-left-red' : 'border-left-red' }"
data-ix="list-item">
<h:outputText value="#{contentItem.description}"/>
</li>
</ui:repeat>
</h:panelGroup>
<p:poll update="commentlist" listener="#{contentItemBean.refresh}"
interval="5"/>
</h:form>
因为我不需要listener
方法来执行任何逻辑,所以我实现了refresh
方法返回null
而没有任何功能。
正确呈现页面,显示所有项目。当p:poll
进行刷新时,所有项目都会消失。我也尝试调用getter方法getContentViewItemList
而不是刷新,但它的行为相同。
更新
这也不起作用。
<h:form id="commentlist">
<h:panelGroup>
<ui:repeat var="contentItem" value="#{contentItemBean.contentViewItemList}">
<li class="list-item-elements type #{contentItem.contentType == 'Partition' ? 'border-left-orange' : contentItem.contentType == 'Chunk' ? 'border-left-red' : 'border-left-red' }"
data-ix="list-item">
<h:outputText value="#{contentItem.description}"/>
</li>
</ui:repeat>
</h:panelGroup>
</h:form>
<h:form>
<p:poll update="commentlist" listener="#{contentItemBean.refresh}"
interval="5"/>
</h:form>
更新II
我在支持bean中添加了一个int
变量,每次调用都会增加。计数器工作并更新,当第一次刷新发生时,列表消失。
此致