Jsf数据表等等,我想要(1,2,3,4,10,15),我得到(1,10,15,2,3,4)。如何解决

Jsf数据表等等,我想要(1,2,3,4,10,15),我得到(1,10,15,2,3,4)。如何解决,jsf,primefaces,jsf-2,primefaces-datatable,Jsf,Primefaces,Jsf 2,Primefaces Datatable,我的JSF代码如下所示: <p:dataTable var="result" value="#{timerConfigurationJobList.model}" rows="10" paginator="true" paginatorPosition="bottom" paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {Pre

我的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>

我得到的结果是:

如图所示:“123”高于“2”、“4”、“7”和“9”。我希望它正好在末尾,这样就可以进行“数字”排序

我正在使用Java和JSF2

编辑:在惰性模型中,我发现:

@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
        }
@覆盖
公共最终列表加载(int first,int pageSize,String sortField,SortOrder SortOrder,
最终地图过滤器){
Map sorts=newhashmap();
if(sortField!=null){
if(排序器等于(排序器升序)){
sorts.put(sortField,Sort.ASC);
}else if(sortOrder.equals(sortOrder.DESCENDING)){
sorts.put(sortField,Sort.DESC);
}
//未排序的可以忽略
}

解决此问题有多种方法:

  • 更改@Kukeltje提到的列类型。不确定是否要更改架构
  • 使用列的sortFunction属性提供自定义排序
  • 传递JSF组件的排序列表

  • 您正在使用惰性加载。您应该注意惰性模型中的排序。您能分享一下您的惰性模型(排序部分)吗?@JasperdeVries查看编辑。这在您的查询中是如何结束的?您可能会在那里发现问题。它们在您的数据库中是数字的吗?还是字符串字段?然后您自己需要进行额外的排序(或更改数据库列)