1

我将 wicket 7 与有状态页面一起使用,每次更改到新页面时,我总是使用如下代码:

PageParameters pageParameters = new PageParameters();
setResponsePage(new SecondPage(pageParameters));

每次更改页面,都会创建一个新的页面版本,并且页面 ID 会加一。但是当我尝试加载上一页时,我从浏览器单击上一个按钮,该页面总是过期。

我在我的程序中使用这个 getApplication 时发现了这个问题,我无法加载上一页。如果我排除 getApplication 我可以加载上一页。

public class BasePage extends WebPage {

  private ServletContext servletContext;
  private boolean developmentMode;

  public BasePage() {

    NextApp app = (NextApp) getApplication();      
    servletContext = app.getServletContext();
    developmentMode = app.usesDevelopmentConfig();

    /** other code **/
   }
}

请帮助我,如何使用 getApplication 并且我也可以加载上一页?

4

1 回答 1

0

PageExpiredException的 javadoc 说:

 Thrown when a {@link Page} instance cannot be found by its id in the page stores. The page may be
 * missing because of reasons like:
 * <ul>
 * <li>the page have never been stored there, e.g. an error occurred during the storing process</li>
 * <li>the http session has expired and thus all pages related to this session are erased too</li>
 * <li>the page instance has been erased because the store size exceeded</li>

 * @see HttpSession#setMaxInactiveInterval(int)
 * @see org.apache.wicket.settings.StoreSettings#setMaxSizePerSession(org.apache.wicket.util.lang.Bytes)
 * @see NotSerializableException

检查其中任何一个是否属实。

另外我建议您使用:setResponsePage(SecondPage.class, new PageParameters());

于 2017-07-06T04:23:33.797 回答