我有一個DataTable
。我在其底部添加了。Wicket,回到前一頁
當我點擊頁碼(例如3)然後點擊表格單元格中的鏈接時,它會轉到另一個頁面。然後我點擊頂部的鏈接返回到數據表的第一頁。但我想回到當我單擊單元格中的鏈接時的同一頁面(第3頁)。
如何編寫一段與瀏覽器後退按鈕相似的代碼? (類似於javascript,history.go(-1)
)
我有一個DataTable
。我在其底部添加了。Wicket,回到前一頁
當我點擊頁碼(例如3)然後點擊表格單元格中的鏈接時,它會轉到另一個頁面。然後我點擊頂部的鏈接返回到數據表的第一頁。但我想回到當我單擊單元格中的鏈接時的同一頁面(第3頁)。
如何編寫一段與瀏覽器後退按鈕相似的代碼? (類似於javascript,history.go(-1)
)
假設您使用setResponsePage()
的DataTable返回頁面,您將返回頁面的新實例,而無需單擊單元格鏈接之前的狀態信息。
在我看來,你有兩種方式來處理這種情況:
你可以在頁面傳遞到詳細頁的構造函數的所有相關信息,以「重建國家」與數據表中你的setResponsePage
(在這種情況下,頁面索引就足夠了)。我之前在搜索結果頁面中使用了這種方法,將所有搜索條件傳遞到詳細信息頁面,並將其傳遞迴搜索頁面以執行相同的搜索。
你也可以通過傳遞一個參考頁與表你去與鏈接的頁面,並使用PageLink
作爲在檢票用戶列表this thread建議回鏈接到同一Page
解決這個問題,或在setResponsePage()
中使用它。
我會去的第一個選項,因爲傳遞一個頁面引用到另一個頁面可能是危險的,你可以在詳細信息頁面序列化的整個數據表頁結束,並PageLink已被棄用。有關詳細信息,請參閱Wicket用戶列表中的this discussion。
要詳細一點,你可以使用DataTable.getCurrentPage()
在Link.onClick()
到當前頁碼傳遞給DetailPage,它在int
成員有存儲,並將其傳遞迴數據表頁面中DataTable.setCurrentPage()
使用它:
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);
}
}
非常感謝!我應用了您編碼的解決方案。我想知道是否可以工作,但它完美的工作!現在我覺得檢票並不像我想象的那麼糟:D –
檢票是一個偉大的,偉大的框架。像所有其他框架一樣,根據您要構建的應用程序類型,這是一個很好的(優秀的)或不好的選項。當我需要將Struts帶回時,我個人覺得需要邁出一步或多步。適應範式的轉變需要一點時間,但這絕對值得。 –
您可以將頁面引用傳遞到下一個類PageReference。
您可能想查看您的[上一個問題](http://stackoverflow.com/q/7594371/851811),並接受一個答案,如果他們中的任何人解決了您的問題。 –