gpt4 book ai didi

java - Wicket 口,返回上一页

转载 作者:行者123 更新时间:2023-12-04 06:11:49 27 4
gpt4 key购买 nike

我有一个 DataTable .我已添加 NavigationToolBar在它的底部。

当我单击页码(例如 3)然后单击表格单元格中的链接时,它会转到另一个页面。然后我单击顶部的链接,该链接返回到数据表的第一页。但是我想返回到单击单元格中的链接时所在的页面(第 3 页)。

如何编写一段类似于浏览器后退按钮的代码? (类似于 javascript, history.go(-1) )

最佳答案

假设您返回带有 setResponsePage() 的 DataTable 的页面,在单击单元格链接之前,您将返回到页面的新实例,而没有有关其状态的信息。

在我看来,您有两种方法来处理这种情况:

  • 您可以将所有相关信息传递给详细信息页面的构造函数,以便使用 setResponsePage 中的 DataTable 在页面中“重建状态”。 (在这种情况下,页面索引可能就足够了)。我之前在搜索结果页面中使用过这种方法,将所有搜索条件传递到详细信息页面,然后再次将其传递回搜索页面以执行相同的搜索。
  • 您也可以通过将带有表格的页面的引用传递到带有链接的页面,并使用 PageLink 来解决这个问题。链接回相同的 Page正如 this thread 中所建议的在 Wicket 用户列表中,或在 setResponsePage() 中使用它.

  • 我会选择第一个选项,因为将 Page 引用传递给另一个页面可能很危险,并且您最终可能会在详细信息页面中序列化整个 DataTable 页面,并且 PageLink 已被弃用。见 this discussion在 Wicket 用户列表中了解详细信息。

    详细说明一下,您可以使用 DataTable.getCurrentPage() 在您的 Link.onClick()要将当前页码传递给 DetailPage,请将其存储在 int 中成员,并将其传递回 DataTable 页面以在 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);
    }
    }

    关于java - Wicket 口,返回上一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7686933/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com