wicket-单击“上一步”按钮时页面已过期

wicket-单击“上一步”按钮时页面已过期,wicket,wicket-7,Wicket,Wicket 7,我在有状态页面中使用wicket 7,每次切换到新页面时,我都会使用如下代码: PageParameters pageParameters = new PageParameters(); setResponsePage(new SecondPage(pageParameters)); 每更改一个页面,就会创建一个新的页面版本,并且页面ID会增加一个。 但当我试图加载上一页时,我从浏览器中单击“上一页”按钮,该页总是过期 我在程序中使用此getApplication时发现问题,无法加载上一页。如

我在有状态页面中使用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,我也可以加载上一页?

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
当页面存储区中的{@link Page}实例的id找不到该实例时,
引发。这一页可能是
*失踪原因如下:
*
    *
  • 页面从未存储在那里,例如,存储过程中发生错误
  • *
  • http会话已过期,因此与此会话相关的所有页面也将被擦除
  • *
  • 页面实例已被擦除,因为超出了存储大小
  • *@请参阅HttpSession#setMaxInactivativeInterval(int) *@see org.apache.wicket.settings.StoreSettings#setMaxSizePerSession(org.apache.wicket.util.lang.Bytes) *@请参阅NotSerializableException
检查这些是否为真

我还建议您使用:
setResponsePage(SecondPage.class、,

新页面参数())

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
当页面存储区中的{@link Page}实例的id找不到该实例时,
引发。这一页可能是
*失踪原因如下:
*
    *
  • 页面从未存储在那里,例如,存储过程中发生错误
  • *
  • http会话已过期,因此与此会话相关的所有页面也将被擦除
  • *
  • 页面实例已被擦除,因为超出了存储大小
  • *@请参阅HttpSession#setMaxInactivativeInterval(int) *@see org.apache.wicket.settings.StoreSettings#setMaxSizePerSession(org.apache.wicket.util.lang.Bytes) *@请参阅NotSerializableException
检查这些是否为真

我还建议您使用:
setResponsePage(SecondPage.class、,

新页面参数())

我已经尝试使用implements Serializable和setResponsePage(SecondPage.class,new PageParameters());但是结果还是一样的..我已经尝试使用implements Serializable和setResponsePage(SecondPage.class,new PageParameters());但是结果仍然是一样的。你能增加并检查你的评分到期时间吗?我已经设置了
,但是当我点击上一个按钮时,它会立即到期。这真的很奇怪。不会,因为你说的是所有的页面都在创建页面ID,你也为表单设置了版本。因为表单没有版本控制。最重要的是,马丁回答得很好。如果这能解决你的问题,你需要提出更多的细节。IMO@randy你解决问题了吗?没有。。我不能解决这个问题@soorapadman你能帮我给我一个最好的例子来编码有状态的页面吗?你的session expiration time
30
可以增加并检查吗。@soorapadman我已经设置了
,但是当我点击“上一步”按钮时,它会立即过期,这真的很奇怪。不会,因为你说的是所有的页面都在创建页面ID,你也为表单设置了版本。因为表单没有版本控制。最重要的是,马丁回答得很好。如果这能解决你的问题,你需要提出更多的细节。IMO@randy你解决问题了吗?没有。。我不能解决这个问题@soorapadman你能帮我给我一个编写有状态页面的最好例子吗?