2015-02-06 1 views
2

외부 정렬 및 부분 목록과 함께 dsiplaytag를 사용하고 있습니다. 숫자 값 (기간)이 포함 된 특정 열을 사용하여 표를 정렬 할 때 전체 목록은 전체적으로 순서대로 (예를 들어 내림차순) 있지만 각 페이지에서 오름차순으로 정렬됩니다.글로벌 주문 표시는 괜찮지 만 동일한 페이지의 주문이 취소됩니다.

Page 1: 
31 
32 
33 
Page 2: 
28 
29 
30 
Page 3: 
25 
26 
27 

내가 기대하는 동안 : 여기

Page 1: 
33 
32 
31 
Page 2: 
30 
29 
28 
Page 3: 
27 
26 
25 

내 테이블의 선언입니다 예를 들면 다음과 같습니다 것은

<display:table name="operations" class="list" requestURI="" 
      id="operation" pagesize="${applicationScope.pageSize}" partialList="true" size="listSize" sort="external" cellpadding="${paddingValue}" 
      export="true"> 

짝수 wierder 것입니다 나의 자바 코드에 리스트 작업의 순서를 뒤집어 썼습니다 만,리스트를 송신하는 순서에 관계없이 displaytag가 역순으로리스트를 표시하고있는 것처럼 보입니다.

이 동작에 대한 아이디어가 있습니까?

+0

태그 라이브러리에 대한 제한 사항입니다. 충분히 유연하지 않습니다. –

+0

나는 이것을 버그가 아니라 제한이라고 부른다. – restricteur

+0

이전에 서버에서 목록을 역으로 사용할 수 있습니다. 마지막 페이지에서 시작하십시오. –

답변

2

투쟁의 일주일 이상 내가 발견 한 해결책 :

package com.example.model;  

import java.text.Collator; 
import java.util.Comparator; 

public class CustomComparator implements Comparator 
{ 

    private Collator collator; 

    public CustomComparator() 
    { 
     this(Collator.getInstance()); 
    } 

    public CustomComparator(Collator collatorToUse) 
    { 
     this.collator = collatorToUse; 
     this.collator.setStrength(0); 
    } 

    public int compare(Object object1, Object object2) 
    { 
     int returnValue; 
     if ((object1 instanceof String) && (object2 instanceof String)) 
     { 
      returnValue = this.collator.compare(object1, object2); 
     } 
     else 
     { 
      if ((object1 instanceof Comparable) && (object2 instanceof Comparable)) 
      { 
       returnValue = ((Comparable) object1).compareTo(object2); 
      } 
      else 
      { 
       returnValue = this.collator.compare(object1.toString(), object2.toString()); 
      } 
     } 
     return -returnValue; 
    } 

} 

: 대신 displaytag 기본 일 (org.displaytag.DefaultComparator)의 사용자 지정 비교기 사용 비교기의 코드는 여기에

입니다 기본 비교기와의 차이점은 비교 메서드의 마지막 명령 인 대신 -returnValue입니다.

comparator.default=com.example.model.CustomComparator 

을 그리고 그건 내 문제가 해결 :

그런 다음 displaytag.properties에 당신이 당신의 비교기를 사용하고 싶다고 displaytag 말한다.