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