【问题标题】:Link to last version of stateful page链接到有状态页面的最新版本
【发布时间】:2013-08-31 13:07:17
【问题描述】:

我有许多有状态的页面,每个页面都有一些状态。例如,每个页面都有一个已提交的表单。

如何组织带有指向这些有状态页面最新版本的链接的菜单?我应该在任何地方(可能在会话中)存储对每个页面的适当对象的引用吗?如果我使用

onClick() { setResponsePage(MyPage.class); }

比我失去页面的先前状态。我想链接到页面的最后状态。

【问题讨论】:

    标签: wicket stateful


    【解决方案1】:

    每次呈现页面时,都会在会话中存储页面的 id。

    int pageId = pageInstance.getPageId();
    

    可以使用列表或堆栈数据结构来保存标识符。

    您可以使用中继器(RepeatingView 等)实现导航菜单,该中继器为会话中的每个页面 ID 创建一个新链接。

    在链接的点击处理程序中,您可以按如下方式重定向用户:

    Page pageInstance = (Page) new PageProvider(pageId, null).getPageInstance();
    setResponsePage(pageInstance);
    

    【讨论】:

      【解决方案2】:
      pageId = this.getPageId(); // get current version of lets say a HomePage
      
      
      //OnClick for Link
      public void onClick()
            { 
              WebPage homePageInstance =
                (WebPage) new PageProvider(HomePage.pageId, null).getPageInstance();
              setResponsePage(homePageInstance);
            }
          });
      

      【讨论】:

      • 代码不是自我解释的。请在您的代码中添加一些解释,以便问题作者能够理解您的代码试图解决的问题。
      【解决方案3】:

      我让它通过构造函数传递int previousId 参数:

      @MountPath(value = "editSomethingPage")
      public class TestPage extends WebPage {
      
      int previousPageId = 0;
      
      public TestPage(int previousPage) {
          super();
          this.previousPageId = previousPage;
      }
      
      @Override
      protected void onInitialize() {
          super.onInitialize();
          add(new Link("goBack") {
              @Override
              public void onClick() {
                  if (previousPageId != 0) {
                      setResponsePage((Page) AuthenticatedWebSession.get().getPageManager().getPage(previousPageId));
                  } else {
                      setResponsePage(PreviousPage.class);
                  }
              }
          });
        }
      }
      

      它阻止创建新页面实例并保留用户创建的所有页面状态。

      【讨论】:

        猜你喜欢
        • 2014-05-05
        • 1970-01-01
        • 1970-01-01
        • 2020-01-20
        • 1970-01-01
        • 2010-12-15
        • 2019-08-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多