2012-06-01 2 views
4

저는 apache myfaces 2.0.2를 사용하여 PrimeFaces 3.2 DataTable을 보유하고 있습니다. 나는 초기 정렬을 원해. 내 JSF는 다음과 같습니다PrimeFaces datatable 초기 sortBy가 작동하지 않습니다.

<p:dataTable id="serverdata" var="serverdata" sortBy="#{serverdata[0]}" sortOrder="descending" 
       value="#{ serverDataTable.list }" rows="10" editable="true" 
       paginator="true" rowsPerPageTemplate="10,20,50" 
       paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"> 
       <f:facet name="header"> 
        Datatable 
       </f:facet> 
       <p:column> 
        <f:facet name="header"> 
         <h:outputText value="Datum"/> 
        </f:facet> 
        <h:outputText value="#{serverdata[0]}"> 
        </h:outputText> 
       </p:column> 

하지만 잘 작동에 나는 sortBy 태그를 삭제하면 나는 UnsupportedOperationException: The result list is read-only.를 얻을.

내 질문 : 어떻게 초기 정렬을 실현할 수 있습니까?

답변

4

정렬은 원본 List에서 실행됩니다. 읽기 전용 인 경우 Exception이 throw됩니다. 같은 시도하지만, 정기적으로 변경할 수 List

편집과 : value="#{myBean.myList}" var="myVar" sortBy="#{myVar.stringProp}"

EDIT2 : 정렬 매개 변수 인 경우

public class MyBean { 
... 
List<MyObject> myList = new ArryList<MyObject>(); 
myList.add(new MyObject("a")); 
myList.add(new MyObject("b")); 
myList.add(new MyObject("c")); 
... 

다음과 같이 정렬 사용 빈에서 정기적으로 목록을 작성 문자열 또는 숫자를 사용하면 아무 것도 사용자 정의 할 필요가 없습니다. 다른 것을 정렬하는 경우 사용자 정의 sortFunction을 정의해야합니다.

lazy 로딩과 같은 고급 옵션을 사용하는 경우 (3.2 절에서 btw가 깨졌습니다 - 이제 3.3으로 업데이트 할 수 있음 - 29.5에서 릴리스 됨) 이 문제를 해결했다고 주장한 경우) 사용자 정의 모델을 정의하고 필터링 및 정렬을 처리해야합니다.

그래서 당신은 배열의 내용으로 데이터를 정렬 할 경우, 당신은 속성 sortFunction="#{myBean.sortData()}"

+0

에게 어떤 문제를 정의하지해야합니다, 나는 대답 – kostja

+0

확인 감사를 편집 한, 그래서 나는에게 특별한 콩 필요 내 물건을 대표한다 [], 맞습니까? b.t.w. 목록 은 jpa 쿼리의 결과입니다. – veote

+0

@veote 새로운 편집이 도움이되기를 바랍니다. – kostja

관련 문제