2010-01-22 4 views
0

토바고 시트가 포함 된 Java 웹 응용 프로그램을 만들었습니다. sortActionListener 특성을 사용하여 시트의 정렬 메커니즘을 재정의하려고했습니다.자바 토바고 시트 정렬 방법을 무시하면 데이터가 표시되지 않습니다.

열을 클릭하면 정렬 방법이 시작됩니다. 열 이름을 읽고 일부 SQL 작업을 수행하여 지금 표시하려는 데이터를 가져올 수 있습니다. SQL 쿼리로 인해 정렬이 완료됩니다. 문제는 시트에 데이터가 표시되지 않는다는 것입니다.

내가 얻을 오류 메시지입니다 :

org.apache.myfaces.custom.ajax.api.AjaxPhaseListener - 찾을 구성 요소는

누구에게 어떻게 아이디어를 가지고 더 ajaxComponent 없다 이거 해결해? 내 시트가 아약스 사용 가능 또는 무엇이 잘못 되었어야합니까?

미리 감사드립니다.

UPDATE :

나는 오류 메시지가 토마 호크 - 샌드 박스 라이브러리 및 토바고 사이에 충돌로 인한 것을 발견했다. 샌드 박스 라이브러리를 제거하면 오류 메시지가 사라집니다. 그럼에도 나는 여전히 그 견해에 문제가있다.

jsp 페이지가 이벤트 핸들러 다음에 다시로드되기 때문에 수동으로 이벤트 핸들러를 단계별로 실행하면 모든 것이 잘 작동합니다. 이것은 완벽 해. 하지만 수동으로 단계를 수행하지 않고 코드를 실행하면 jsp 페이지가 다시로드되지 않으므로 데이터를 볼 수 없습니다.

왜 이런가요, 어떻게 JSP 페이지와 따라서 시트를 새로 고치려면 내 코드를 설득 할 수 있습니까? ;)

답변

0

는 시트 자체와 상호 작용이 켜지지 인 결과를 표시하기 위해 - 어떻게 든 의미가) 전부

List<SheetData> sheetData = (List<SheetData>) sheet.getValue(); 

... performing SQL query ... 

sheetData = sqlresult; 

), 시트의 값을 얻기 SQL을 수행 질의하고 그 결과를 sheetData 객체로 보낸다. 작업이 완료되면 시트가 새로 고쳐집니다.

하지만 많은 시간 (매우 크고 복잡한 데이터베이스, 묻지 말고 ...)이 걸리기 때문에 SQL 쿼리를 제거하기로 결정했습니다. 저는 이제 비교자를 만들어서 앞으로 나아갈 것입니다.

Comparator<SheetData> comparator = null; 

comparator = new Comparator<SheetData> { 

    public int compare(SheetData sd1, SheetData sd2) { 

     int rc = 0; 

     if (rc == 0) { 
      rc = sd1.getString("Field").compareTo(sd2.getString("Field")); 
     } 

     if (rc == 0) { 
      rc = sd1.getString("Field2").compareTo(sd2.getString("Field2")); 
     } 

     return rc; 
    } 
}; 

Collections.sort(sheetData, comparator); 
비교기 정렬 등 많은 분야가 내가 원하는 수

하고 빠른) 또한 시트의 상태 (오름차순/내 첫 번째 방법으로 표시되지 않습니다 sortcolumn, 이내) 내림차순 (SQL을 볼 수 있습니다 질문).

관련 문제