Jsf dataTable sortby,我想要(1,2,3,4,10,15),我得到(1,10,15,2,3,4)。怎么解决

时间:2017-04-07 07:52:42

标签: jsf primefaces jsf-2 pf-datatable

我的JSF代码是这样的:

<p:dataTable var="result" value="#{timerConfigurationJobList.model}" rows="10"
                         paginator="true" paginatorPosition="bottom"
                         paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
                         rowsPerPageTemplate="10,20,50" id="approvalTable" lazy="true">           
                <p:column sortBy="#{result.jobId}">
                    <f:facet name="header">
                        <h:outputText value="#{msg['content.jobList.jobId']}"/>
                    </f:facet>
                </p:column >
 </p:dataTable>

我得到的结果是:

'Wrongly sorted'

从图中可以看出:&#39; 123&#39;高于&#39; 2&#39;,&#39; 4&#39;,&#39; 7&#39;和&#39; 9&#39;。我希望它在最后得到,所以它是数字的&#39;排序。

使用Java和JSF 2。

编辑:在懒惰的模型中,我发现了这个:

@Override
    public final List<T> load(int first, int pageSize, String sortField, SortOrder sortOrder,
            final Map<String, Object> filters) {

        Map<String, Sort> sorts = new HashMap<>();

        if (sortField != null) {
            if (sortOrder.equals(SortOrder.ASCENDING)) {
                sorts.put(sortField, Sort.ASC);
            } else if (sortOrder.equals(SortOrder.DESCENDING)) {
                sorts.put(sortField, Sort.DESC);
            }
            // unsorted can be ignored
        }

1 个答案:

答案 0 :(得分:0)

有多种方法可以解决这个问题:

  1. 更改@Kukeltje所述的列类型。不确定是否要更改架构。
  2. 使用column的sortFunction属性提供自定义排序。
  3. 传递JSF组件的排序列表。