2011-10-07 7 views
2

나는 DataTable입니다. 나는 그 밑에 을 추가했다.개찰구, 이전 페이지로 돌아 가기

페이지 번호 (예 : 3)를 클릭 한 다음 테이블 셀의 링크를 클릭하면 다른 페이지로 이동합니다. 그런 다음 상단의 링크를 클릭하여 데이터 테이블의 첫 번째 페이지로 돌아갑니다. 하지만 셀에있는 링크를 클릭했을 때와 같은 페이지로 돌아가고 싶습니다 (3 페이지).

브라우저의 뒤로 버튼처럼 작동하는 코드를 작성하려면 어떻게해야합니까? (자바 스크립트와 같은 것, history.go(-1))

+1

[이전 질문] (http://stackoverflow.com/q/7594371/851811)을 검토하고 질문이있는 경우 대답을 수락하십시오. –

답변

2

데이터 테이블이 setResponsePage() 인 페이지로 돌아가고 있다고 가정하면 셀 링크를 클릭하기 전에 상태에 대한 정보없이 페이지의 새 인스턴스로 돌아갑니다.

내가 그것을보고, 당신은이 상황을 처리하는 방법은 두 가지가 있습니다

  1. 당신은 DataTable을에있는 페이지에서 '상태를 재 구축'을 위해 세부 정보 페이지의 생성자에 모든 관련 정보를 전달할 수를 setResponsePage (이 경우 페이지 색인으로 충분할 수 있습니다). 이전에이 검색 방식을 검색 결과 페이지와 함께 사용하여 모든 검색 기준을 세부 정보 페이지로 전달한 다음 동일한 검색을 수행하기 위해 다시 검색 페이지로 전달했습니다.

  2. 당신은 또한 당신이 링크로 이동 페이지에 테이블과 페이지에 대한 참조를 전달하고, 개찰구 사용자 목록에서 this thread에 제시된 것과 동일한 Page로 다시 연결하는 PageLink를 사용하여이 문제를 해결 할 수 또는 setResponsePage()에서 사용할 수 있습니다.

다른 페이지에 페이지 참조를 전달하는 것은 위험 할 수 있기 때문에 나는 첫 번째 옵션 가고 싶어, 당신은 세부 정보 페이지에 연재 전체 DataTable의 페이지로 끝낼 수 있으며, PageLink가 사용되지 않습니다. 자세한 내용은 Wicket 사용자 목록의 this discussion을 참조하십시오.

, 당신은 DetailPage에 현재 페이지 번호를 전달하기 위해 Link.onClick()DataTable.getCurrentPage()을 사용할 수있는, 조금 정교한 int 멤버가 보관하고 DataTable.setCurrentPage()에서 사용하는 DataTable의 페이지로 다시 전달합니다 :

public DataTablePage extends Page { 
     private DataTable dataTable; 
     public void setDataTablePage(int page){ 
      dataTable.setCurrentPage(page); 
     } 
     // ..... 
    // DataTable cell link onclick 
    public void onClick(){ 
     int pageNumber = dataTable.getCurrentPage(); 
     DetailPage detailPage = new DetailPage(id, params, pageNumber); 
     setResponsePage(page); 
    }   
} 

public class DetailPage extends Page { 
    int pageNumber; 
    public DetailPage(String id, Object params, int pageNumber){ 
     //... 
     this.pageNumber = pageNumber; 
     //... 
    } 
    private void backToTablePage(){ 
      DataTablePage dataTablePage = new DataTablePage(id, params); 
      dataTablePage.setDataTablePage(pageNumber); 
      setResponsePage(dataTablePage); 
    } 
} 
+0

대단히 감사합니다! 코딩 한 솔루션을 적용했습니다. 나는 일할 수 있는지 궁금 해서요,하지만 완벽하게 작동합니다! 지금 나는 개찰구가 내가 생각한 것만 큼 나쁘지 않다고 느낍니다. D –

+1

개찰구는 위대하고 훌륭한 틀입니다. 모든 다른 프레임 워크와 마찬가지로 빌드하려는 응용 프로그램의 종류에 따라 좋은 (우수) 또는 나쁜 옵션입니다. 나는 Struts를 다시 가져 가야 할 때 개인적으로 한 걸음 내딛거나 많은 것을 되찾기를 원합니다. 그것은 패러다임의 변화에 ​​익숙해지기까지는 약간의 시간이 걸리지 만, 그럴 가치가 있습니다. –

관련 문제