选择行Primefaces dataTable时的liveScroll追加页面刷新

选择行Primefaces dataTable时的liveScroll追加页面刷新,primefaces,datatable,Primefaces,Datatable,我想我在Primefaces 6.1的dataTable中发现了livescroll的一个bug 我在第二列中有命令链接,它将行/行号保存到变量,并调用方法保存文件。它适用于前10个元素(页面大小),但不适用于通过动态分页附加的任何其他元素,而是在第一个设置为0时调用load。我在浏览器控制台或tomcat控制台中没有看到任何错误。在我的主项目中,页面也丢失了所有css元素,只保留了文本,但这可能是liferay 6.2的问题 如果我通过替换来禁用liveScroll scrollRows="1

我想我在Primefaces 6.1的dataTable中发现了livescroll的一个bug

我在第二列中有命令链接,它将行/行号保存到变量,并调用方法保存文件。它适用于前10个元素(页面大小),但不适用于通过动态分页附加的任何其他元素,而是在第一个设置为0时调用load。我在浏览器控制台或tomcat控制台中没有看到任何错误。在我的主项目中,页面也丢失了所有css元素,只保留了文本,但这可能是liferay 6.2的问题

如果我通过替换来禁用liveScroll

scrollRows="10" liveScroll="true" scrollHeight="90%" scrollable="true"

一切正常。我已经没有办法调试和修复它了,有什么建议吗

xhtml数据表:

<p:dataTable var="live" value="#{LiveLazyModel}" rows="10" lazy="true"
               scrollRows="10" liveScroll="true" scrollHeight="90%" scrollable="true"
               style="width: 1000px">
     <p:column headerText="Id">
        <h:outputText value="#{live.id}" id="idlive"/>
     </p:column>
     <p:column headerText=".txt" style="width: 80px" exportable="false">
        <h:commandLink>
           <h:outputText value="download"/>
           <f:param name="liveId" value="#{live.id}" />
           <f:setPropertyActionListener value="#{live}" target="#{LiveLazyModel.selectedRow}"/>
           <p:fileDownload value="#{LiveLazyModel.liveStreamedContent}"/>
        </h:commandLink>
     </p:column>
</p:dataTable>

豆子:

@ManagedBean(name = "LiveLazyModel")
@ViewScoped
public class LiveLazyModel extends LazyDataModel {

    private Live selectedRow;

    @Override
    public List load(int first, int pageSize, String sortField, SortOrder sortOrder, Map filters) {
        List list = addToList(first, pageSize);
        this.setRowCount(100);
        this.setPageSize(pageSize);
        return list;
    }

    private List addToList(int first, int pageSize) {
        List list = new ArrayList();
        for (Integer i = first; i < first + pageSize; i++) {
            list.add(new Live(i));
        }
        return list;
    }

    public StreamedContent getliveStreamedContent()  throws IOException {
        String idFrom = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("liveId");
        if(selectedRow != null){
            InputStream targetStream = IOUtils.toInputStream(selectedRow.id + (Double.toString(Math.random()).substring(1)));
            return new DefaultStreamedContent(targetStream, "txt", "idLiveFromSelectedRow" + selectedRow.id + ".txt");
        }
        if (idFrom != null) {
            InputStream targetStream = IOUtils.toInputStream(idFrom + (Double.toString(Math.random()).substring(1)));
            return new DefaultStreamedContent(targetStream, "txt", "idLiveFromFacesContext" + idFrom + ".txt");
        }
        throw new RuntimeException("liveId is null & selectedRow is null  ");
    }

    public void setSelectedRow(Live selectedRow) {
        this.selectedRow = selectedRow;
    }
}
@ManagedBean(name=“LiveLazyModel”)
@视域
公共类LiveLazyModel扩展了LazyDataModel{
私人直播节目;
@凌驾
公共列表加载(int-first、int-pageSize、字符串排序字段、排序器排序器、映射过滤器){
列表=添加列表(第一个,页面大小);
这个.setRowCount(100);
此.setPageSize(pageSize);
退货清单;
}
私有列表地址列表(int-first,int-pageSize){
列表=新的ArrayList();
for(整数i=first;i
可在以下位置找到工作裸骨代码:

要运行它:mvn tomcat7:run应该足够了,localhost:9966/live

@ManagedBean(name = "LiveLazyModel")
@ViewScoped
public class LiveLazyModel extends LazyDataModel {

    private Live selectedRow;

    @Override
    public List load(int first, int pageSize, String sortField, SortOrder sortOrder, Map filters) {
        List list = addToList(first, pageSize);
        this.setRowCount(100);
        this.setPageSize(pageSize);
        return list;
    }

    private List addToList(int first, int pageSize) {
        List list = new ArrayList();
        for (Integer i = first; i < first + pageSize; i++) {
            list.add(new Live(i));
        }
        return list;
    }

    public StreamedContent getliveStreamedContent()  throws IOException {
        String idFrom = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("liveId");
        if(selectedRow != null){
            InputStream targetStream = IOUtils.toInputStream(selectedRow.id + (Double.toString(Math.random()).substring(1)));
            return new DefaultStreamedContent(targetStream, "txt", "idLiveFromSelectedRow" + selectedRow.id + ".txt");
        }
        if (idFrom != null) {
            InputStream targetStream = IOUtils.toInputStream(idFrom + (Double.toString(Math.random()).substring(1)));
            return new DefaultStreamedContent(targetStream, "txt", "idLiveFromFacesContext" + idFrom + ".txt");
        }
        throw new RuntimeException("liveId is null & selectedRow is null  ");
    }

    public void setSelectedRow(Live selectedRow) {
        this.selectedRow = selectedRow;
    }
}