首页 > 解决方案 > Primefaces p:datatable sortBy无法正常工作

问题描述

我的网站上显示了预先制作的视图。数据查询是通过 Hibernate 从 DB2 数据库完成的,并使用 JSF 显示。整个事情在本地 JBoss 服务器上运行。

这是 HTML 背后的逻辑 bean:

@Named(value = "vb")
@ViewScoped
public class ViewBean implements Serializable {

@Inject
private ViewHandler vh;

@PostConstruct
public void init() {
}

public List<PortView> getPVList() {
    return vh.getPortViewList();
}

ViewHandler vh检索来自相应实体的视图列表。(见下文)

@Stateless
public class ViewHandler {

public List<PortView> getPortViewList() {
    List<PortView> pvlist = em.createQuery("SELECT v FROM PortView v", PortView.class).getResultList();
    return pvlist;
}

在这里,您可以在我的 html 中看到 p:datatable:

<html>
<h:body>
<h:form>
    <p:dataTable var="portview" value="#{vb.PVList}"
        resizableColumns="true" stickyHeader="true"
        stickyTopAt=".layout-topbar"
        style="margin-left:10%; margin-right:10%; font-family: verdana">

        <p:column style="width: 0px" sortable="false" />
        <p:column headerText="Instance" sortBy="#{portview.instance}"
            style="font-family: verdana; text-align:left">
            <h:outputText value="#{portview.instance}" />
        </p:column>

        [more columns]

    </p:dataTable>
</h:form>
</h:body>
</html>

问题:不能对每一列进行排序,内容总是随机的。我应该怎么做才能解决这个问题?

标签: htmlprimefacesprimefaces-datatable

解决方案


幸运的是@Melloware 能够回答我的问题:您只需添加sortBy="#{var.property}"p:dataTable属性。

有关文档,请参见此处


推荐阅读