데이터 테이블이 setResponsePage()
인 페이지로 돌아가고 있다고 가정하면 셀 링크를 클릭하기 전에 상태에 대한 정보없이 페이지의 새 인스턴스로 돌아갑니다.
내가 그것을보고, 당신은이 상황을 처리하는 방법은 두 가지가 있습니다
당신은 DataTable을에있는 페이지에서 '상태를 재 구축'을 위해 세부 정보 페이지의 생성자에 모든 관련 정보를 전달할 수를 setResponsePage
(이 경우 페이지 색인으로 충분할 수 있습니다). 이전에이 검색 방식을 검색 결과 페이지와 함께 사용하여 모든 검색 기준을 세부 정보 페이지로 전달한 다음 동일한 검색을 수행하기 위해 다시 검색 페이지로 전달했습니다.
당신은 또한 당신이 링크로 이동 페이지에 테이블과 페이지에 대한 참조를 전달하고, 개찰구 사용자 목록에서 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);
}
}
[이전 질문] (http://stackoverflow.com/q/7594371/851811)을 검토하고 질문이있는 경우 대답을 수락하십시오. –