【发布时间】:2013-09-25 08:48:10
【问题描述】:
我正在尝试在页面上显示数据表之后动态更新 PrimeFaces 数据表的页面大小,但我似乎无法做到这一点。如果这很重要,我正在使用延迟加载的数据表...将 EL 表达式放在行属性中并进行表刷新不起作用,并导致分页器不返回任何数据。
如果这是一个错误以及如何修复它,有什么想法吗?
谢谢
【问题讨论】:
标签: jsf primefaces datatable
我正在尝试在页面上显示数据表之后动态更新 PrimeFaces 数据表的页面大小,但我似乎无法做到这一点。如果这很重要,我正在使用延迟加载的数据表...将 EL 表达式放在行属性中并进行表刷新不起作用,并导致分页器不返回任何数据。
如果这是一个错误以及如何修复它,有什么想法吗?
谢谢
【问题讨论】:
标签: jsf primefaces datatable
你到底想做什么?这对我有用(Mojarra 2.1.26,PrimeFaces 3.5):
@ManagedBean
@ViewScoped
public class Bean {
public class Item {
private String name;
public Item(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
private List<Item> items;
public Bean() {
Item item1 = new Item("item1");
Item item2 = new Item("item2");
items = Arrays.asList(item1, item2);
}
public List<Item> getItems() {
return items;
}
private int tableSize = 1;
public int getTableSize() {
return tableSize;
}
public void actionSwitchSize() {
tableSize = tableSize == 1 ? 2 : 1;
}
}
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head />
<h:body>
<h:form>
<p:dataTable id="table" var="item" value="#{bean.items}"
rows="#{bean.tableSize}" paginator="true">
<p:column>
#{item.name}
</p:column>
</p:dataTable>
<p:commandButton value="switch size" action="#{bean.actionSwitchSize}"
update="table" />
</h:form>
</h:body>
</html>
【讨论】:
您无需刷新或更新数据表。在<p:dataTable> 的rowsPerPageTemplate 属性中使用EL 表达式,加载数据表后只需更改行数。
<p:dataTable value="#{managedBean.users}" var="user" lazy="true" paginator="true" rows="10" rowsPerPageTemplate="10,25 #{fn:length(managedBean.users)}">
并在页面中包含此xmlns:fn="http://java.sun.com/jsp/jstl/functions"。
【讨论】: