标签: datascroller

CommandLink在延迟加载的Primefaces Datascroller上不起作用

延迟加载Primefaces Datascroller组件时遇到问题。

我有一个jsf页面,该页面应在页面加载时显示10个事件。如果用户想查看更多内容,则可以单击更多按钮以加载并显示10个下一个事件。对于每个事件行,都有一个可用于显示事件详细信息的链接。

    <h:form id="mainForm" >
        <p:dataScroller value="#{backing.lazyModel}" var="event" lazy="true" chunkSize="10" rowIndexVar="index">
            #{event.name}
            <p:commandLink class="view-trigger"
                value="View Event Details"
                actionListener="#{backing.initViewEventDetails(index, event)}"/>
            <f:facet name="loader">
                <p:outputPanel 
                        visible="#{backing.lazyModel.rowCount gt 10}"
                        rendered="#{backing.lazyModel.rowCount gt 10}">
                    <p:commandLink value="More" />
                </p:outputPanel>
            </f:facet>
        </p:dataScroller>
    </h:form>
Run Code Online (Sandbox Code Playgroud)

初始搜索工作正常,也就是说,当我单击“查看事件详细信息”链接时,将调用后备bean,并且看到接收到的索引和事件与我单击的行相对应。

但是,一旦加载下一个包含1个额外事件的块,页面将显示11个事件,但是单击“查看事件详细信息”链接将发送适当的索引,但不会发送适当的事件。例如,如果我单击索引0处的事件,那么我将获得索引10处的事件,如果我单击索引1处的事件,将不会调用我的支持bean。

当我单击“更多”按钮时,数据滚动器似乎忘记了最后10个事件,但我的惰性数据模型仍然记得。

支持豆:

@ManagedBean(name="backing")
@ViewScoped
public class DataScrollerBacking implements Serializable {

private static final long serialVersionUID = 4012320411042043677L;
private static final Logger LOGGER = Logger.getLogger(DataScrollerBacking.class);

@ManagedProperty("#{settings.dataSource}")
private String dataSource;

private WebEventDAO webEventDAO;

private LazyDataModel<Event> lazyModel;

@PostConstruct
public void init() {
    webEventDAO …
Run Code Online (Sandbox Code Playgroud)

jsf lazy-loading datascroller primefaces jsf-2.2

5
推荐指数
1
解决办法
2486
查看次数

标签 统计

datascroller ×1

jsf ×1

jsf-2.2 ×1

lazy-loading ×1

primefaces ×1