Primefaces p:数据表排序无法正常工作

问题描述

我在网站上显示了预制视图。数据查询是通过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>

问题:无法对每一列进行排序,内容始终是随机的。我该怎么办才能解决这个问题?

解决方法

幸运的是,@ Melloware能够回答我的问题:您只需将sortBy="table.column"添加到p:datatable属性中即可。

有关文档,请参见here