p:dataTable 不分页
Posted
技术标签:
【中文标题】p:dataTable 不分页【英文标题】:p:dataTable does not paginate 【发布时间】:2015-08-05 10:00:46 【问题描述】:我有一个分页数据表:
<h:form>
<p:dataTable var="proj" value="#orderListView.projects"
paginator="true" rows="3"
paginatorTemplate="RowsPerPageDropdown FirstPageLink PreviousPageLink CurrentPageReport NextPageLink LastPageLink"
>
<p:column sortBy="#proj.id">
<h:outputText value="#proj.id" />
</p:column>
<p:column sortBy="#proj.name">
<h:outputText value="#proj.name" />
</p:column>
<p:column sortBy="#proj.displayName">
<h:outputText value="#proj.displayName" />
</p:column>
</p:dataTable>
</h:form>
基于此实体:
@Entity
public class Project implements Serializable
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String displayName;
private String name;
public Project()
public Project(int id, String displayName, String name)
this.id = id;
this.displayName = displayName;
this.name = name;
// Getters+setters.
并且填充在这个 bean 中(为简洁起见,我省略了 DAO/Service 部分,我在 @PostConstruct
中对模型进行硬编码):
@ManagedBean
@RequestScoped
public class OrderListView
private List<Project> projects;
@PostConstruct
public void init()
projects = new ArrayList<Project>();
projects.add(new Project(10, "Cruze", "cruze"));
projects.add(new Project(11, "Dark-Hive", "dark-hive"));
projects.add(new Project(12, "Delta", "delta"));
projects.add(new Project(10, "Cruze", "cruze"));
projects.add(new Project(11, "Dark-Hive", "dark-hive"));
projects.add(new Project(12, "Delta", "delta"));
projects.add(new Project(13, "Dot-Luv", "dot-luv"));
projects.add(new Project(14, "Eggplant", "eggplant"));
projects.add(new Project(15, "Excite-Bike", "excite-bike"));
projects.add(new Project(16, "Flick", "flick"));
projects.add(new Project(17, "Glass-X", "glass-x"));
projects.add(new Project(18, "Cruze", "cruze"));
projects.add(new Project(19, "Dark-Hive", "dark-hive"));
projects.add(new Project(20, "Delta", "delta"));
projects.add(new Project(23, "Dot-Luv", "dot-luv"));
projects.add(new Project(24, "Eggplant", "eggplant"));
projects.add(new Project(25, "Excite-Bike", "excite-bike"));
projects.add(new Project(26, "Flick", "flick"));
projects.add(new Project(27, "Glass-X", "glass-x"));
public List<Project> getProjects()
return projects;
数据表正确显示列表,但分页不起作用。这是如何引起的,我该如何解决?我也尝试过延迟加载,但它也不起作用。
【问题讨论】:
“我使用 Sprimg MVC 和 PrimeFaces。” - 不真实。不能一起使用它们(PrimeFaces 作为 JSF 组件库)。 对不起,Spring Core - 我已经改变了 对于延迟加载,您需要为 Project 创建lazyDateModel 并实现您自己的加载方法......您的示例甚至不接近它。 primefaces.org/showcase/ui/data/datatable/lazy.xhtml 是的,我从官方网站获取,但在我的情况下它不起作用。现在我尝试创建只有分页(没有惰性)的基本表,但分页不起作用 - 数据加载和页面存在于表中(不工作) 【参考方案1】:我不确定您到底出了什么问题,但是我将您的代码复制到了一个测试项目中,并且分页器在 PrimeFaces 5.2 中运行良好。
【讨论】:
真的,我删除了 bootstrap 和 bootsfaces 依赖项,分页现在可以工作了! 很高兴听到这个消息!请将其发布为答案并将其标记为已接受。将引导程序包含在问题的标签中可能会很好,也许其他人将来会遇到同样的问题。 不仅包含 bootsfaces 作为标签,还包含在问题本身中以上是关于p:dataTable 不分页的主要内容,如果未能解决你的问题,请参考以下文章
<p:dataTable> 中的 sortMode="multiple" 和 lazy="true" 在分页期间清除多排序元数据
如何从 p:dataTable 本身对 p:dataTable 进行 ajax 更新?
p:dataTable 中的 SummaryRow 不起作用