我有一个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),并接受一个答案,如果他们中的任何人解决了您的问题。 –