2011-09-08 2 views
1

Jsf 페이지에서 문제가 발생했습니다. datascroller는 dataTable의 페이지 매김을 변경하지 않았습니다 (여전히 페이지 매김의 첫 번째 페이지에 머무름).Datascroller 및 sortOrder on rich : extendedDataTable

  • Richfaces : 3.3.2.SR1
  • JSF : 1.2
  • 제이보스이 코드는 페이지 매김 변경되지 않습니다 5.0.1

:

<rich:extendedDataTable id="tableDataTable" value="#{beanController.listTableDataModel}" 
    var="tableItem" selectionMode="single" 
    rows="3" width="150px" height="100px" selection="#{beanController.tableSelection}"> 

    <rich:column sortBy="#{tableItem.code}" width="150px" label="#{msg.table}"> 
     <h:outputText value="#{tableItem.code}" /> 
    </rich:column> 
    <rich:column sortBy="#{tableItem.code}" width="150px" label="#{msg.table}"> 
     <h:outputText value="#{tableItem.code}" /> 
    </rich:column> 
</rich:extendedDataTable> 
<rich:datascroller id="tableDataScroller" align="center" for="tableDataTable" renderIfSinglePage="false" /> 

내가 해결을 그것은 sortOrder 속성을 정의합니다. 이 잘 (하나 개의 차이 : sortOrder="ASCENDING" 열에) : 작동

<rich:extendedDataTable id="tableDataTable" value="#{beanController.listTableDataModel}" 
    var="tableItem" selectionMode="single" 
    rows="3" width="150px" height="100px" selection="#{beanController.tableSelection}"> 

    <rich:column sortBy="#{tableItem.code}" width="150px" label="#{msg.table}" sortOrder="ASCENDING"> 
     <h:outputText value="#{tableItem.code}" /> 
    </rich:column> 
    <rich:column sortBy="#{tableItem.code}" width="150px" label="#{msg.table}"> 
     <h:outputText value="#{tableItem.code}" /> 
    </rich:column> 
</rich:extendedDataTable> 
<rich:datascroller id="tableDataScroller" align="center" for="tableDataTable" renderIfSinglePage="false" /> 

왜 우리는 datascroller를 사용하여 데이터 테이블 페이지 매김을 해결하기 위해있는 sortOrder을 정의해야합니까되는 질문? 아이디어가 있으십니까?

편집 : DataProvider에 코드

public class BeanDataProvider implements DataProvider<Bean> { 


    private static final long serialVersionUID = -3539248649798786324L; 

    public BeanDataProvider() { 
    } 

    public BeanDataProvider(ArrayList<Bean> beans) { 
     this.beans = beans; 
    } 

    private List<Bean> beans; 


    public Bean getItemByKey(Object paramObject) { 
     Bean resultat = null; 
     for (Bean bean : this.getBeans()) { 
      if (bean.getIdentifiant().equals(paramObject)) { 
       resultat = bean; 
       break; 
      } 
     } 
     return resultat; 
    } 


    public List<Bean> getItemsByRange(int paramInt1, int paramInt2) { 
     return this.getBeans().subList(paramInt1, paramInt2); 
    } 


    public Object getKey(Bean paramT) { 
     return paramT.getIdentifiant(); 
    } 


    public int getRowCount() { 
     return this.getBeans().size(); 
    } 


    public List<Bean> getBeans() { 
     if (beans == null) { 
      beans = new ArrayList<Bean>(); 
     } 
     return beans; 
    } 


    public void setbeans(List<Bean> beans) { 
     this.beans = beans; 
    } 

} 
+0

DataP 란 무엇입니까? rovider 구현? 질문에 코드 스 니펫을 붙여 넣을 수 있습니까? – Andrey

+0

@Andrey : 편집을 참조하십시오. 당신은 무엇에 대한 생각 ? –

+0

@Java 게시물의 시작 부분을 보라 : Richfaces 3.3.2.SR1 (3.3.3. 최종), Jsf 1.2, JBoss 5.0.1. 어떤 다른 버전을 원하십니까? –

답변

1

그것은 RichFaces 버그은 : 번째 페이지 클릭

TableSorting - Built-in - pages cannot be switched by DataScroller

(예컨대 2) 초기 상태에서, 페이지 는 전환되지 않았다.

정렬 된 열의 헤더를 클릭 한 후 테이블이 잘 렌더링되었습니다.

3.3.3.Final로 업그레이드하면 도움이됩니다. ExtendedTableDataModel 대하여

:

그것은 은 (richfaces-IMPL-3.3.3.Final.jar에 org.richfaces.model.ExtendedTableDataModel) 3.3.3.Final 가능하다. 또한 문서에서 사용할 수 있습니다 : http://docs.jboss.org/richfaces/3.3.X/3.3.3.Final/en/apidoc_impl/ (../apidoc_impl/은 richfaces-impl에 사용되고 ../apidoc/는 richfaces-ui에 사용됩니다).

아니요 RF4에서 사용할 수있는입니다.RF4에서 이러한 클래스를 탐구 :

org.richfaces.model.ArrangeableState 
org.ajax4jsf.model.ExtendedDataModel 
org.richfaces.model.ArrangeableModel 

UPDATE :

사용 ExtendedTableDataModifiableModel 대신 ExtendedTableDataModel : 목록이 귀하의 경우와 같이 데이터 소스로 사용되는

new ExtendedTableDataModifiableModel(dataProvider); 

또는 더 나은 () :

new ListDataModel(list); 
+0

3.3.3. 최종으로 업그레이드되었지만 문제가 계속 발생합니다. 나는 여전히 column에 sortOrder를 추가하여이를 수정할 수있다. 내용은 지금 사용 :' \t \t \t org.richfaces.ui \t \t \t richfaces - UI \t \t \t 3.3.3.Final \t \t \t \t \t 을 \t \t \t org.richfaces.framework이 \t \t \t richfaces - IMPL \t \t \t 3.3.3.Final 진 찰리 @ \t \t' –

+0

가 다른 테이블 모델 구현을 사용하여 시도 되세요 (참조 업데이트 섹션)? – Andrey

+0

나는 그것을하고있다. .. 그러나 나는 개발에서 나를 멈추게하는 우선 순위 작품을 가지고있다. 당분간 ListDataModel을 사용하여 선택한 행을 검색 할 수없고'getRowData()'는 null을 반환합니다. 'rich : extendedDataTable'을 선언하고'getRowData()'에 행을 넣는 방법? –

1

는 richfaces 3.3.3을 사용하여 코드를 테스트하고 그것을 잘 국지적 페이지 매김이 두 경우 모두에서 변경할 수 있습니다 작동합니다. 그래서 sortOrder와 datatable 페이지 매김은 서로 영향을 끼치 지 않는 관계가 있다고 생각합니다.

그리고 release note of RichFaces - Version 3.3.3.BETA1에는 rich:datascroller에 대한 몇 가지 버그가 있습니다. DEV 환경에서 richfaces 3.3.3으로 업그레이드하여 문제가 아직 남아 있는지 확인할 수 있습니다.

+0

"sortOrder와 datatable 페이지 매김에는 서로 영향을 미치지 않는 관계가 있습니다." 동의합니다, 이것이 내가 게시 한 이유입니다.) 그렇지 않으면, 내가 업데이트하고 볼 것입니다. 팁 주셔서 감사합니다 –

+0

3.3.3. 최종으로 변경하면 해결되지 않은 ExtendedTableDataModel에 문제가 있습니다. 나는 [latest_3_3_X] (http://docs.jboss.org/richfaces/latest_3_3_X/en/apidoc_impl/org/richfaces/model/ExtendedTableDataModel.html)의 ExtendedTableDataModel 클래스를 찾았지만 [3.3. 3. 최종] (http://docs.jboss.org/richfaces/3.3.X/3.3.3.Final/en/apidoc/). 이 클래스는 3.3.3에서 제거 되었습니까? –

+0

[documentation] (http://docs.jboss.org/richfaces/3.3.X/3.3.3.Final/en/apidoc_impl/)에서 ExtendedTableDataModel 찾기. 항아리에는 없습니다 ...이 클래스는 3.3에서 제거 되었습니까? .3 병? –

관련 문제