wicket页面在另一个标签提交后过期

时间:2013-09-02 14:24:33

标签: wicket wicket-1.6

我正在使用wicket 6.9 我有一个表格,其链接列创建如下:

               @Override
                public void onClick() {
                    PageParameters pageParameters = new PageParameters();
                    IEntity iEntity = (IEntity) getDefaultModelObject();
                    pageParameters.set(HomePage.NAVIGATE_TO, navigateTo);
                    String routingPropertyToPass = "";
                    String idToPass = String.valueOf(BeanUtils.getProperty(iEntity, idPropertyToPass));
                    log.info(routingProperty);
                    if (!ColumnType.LINKABLE_WITH_FILTER.equals(columnDisplay.getColumnType()))
                        routingPropertyToPass = String.valueOf(BeanUtils.getProperty(iEntity, routingProperty));
                    if (filterBy != null) {
                        log.info("passing to the next page idPropertyToPass = {} and idToPass {}", iconCssOrNextPageReflectionProperty,
                                idToPass);
                        pageParameters.add("filterBy", iconCssOrNextPageReflectionProperty + "," + idToPass);
                    } else {
                        pageParameters.set(HomePage.ENTITY_ID, idToPass);
                        pageParameters.set(HomePage.ROUTING_PROPERTY, routingPropertyToPass);
                    }
                    pageParameters.set(HomePage.CLASS_NAME, clazz.getSimpleName());

                    HomePage homePage = new HomePage(pageParameters);
                    setResponsePage(homePage);

                }

当在另一个标签上打开链接时,一切正常,也适用于第二个和第二个。 但是当我在1-3上提交并返回到网格并从那里再次点击另一个链接时amd得到页面已经过期

为什么会出现任何问题?

1 个答案:

答案 0 :(得分:1)

不是在链接的onClick()方法中执行所有这些操作,而是在一个块中计算pageParameters对象,并使用这样的BookmarkablePageLink:

add(new BookmarkablePageLink("link", HomePage.class, pageParameters);

您看到页面过期消息的原因是因为您使用的链接将呈现相对于用户页面版本的非可收藏的URL,并且很可能在其他选项卡上打开较新的页面版本导致链接所在的旧版本有效被丢弃。你可以在Application对象上调整wicket存储的页面版本的数量,但是如果你有所有这些基于页面参数的好东西,你最好修复链接以呈现可收藏的(无状态)URL。