Wicket 如何在没有版本控制的情况下创建可书签状态页面?

Wicket 如何在没有版本控制的情况下创建可书签状态页面?,wicket,versioning,bookmarks,stateful,Wicket,Versioning,Bookmarks,Stateful,Wicket为页面和页面链接(afaik)提供以下概念: 可书签链接不依赖于任何会话信息。URL可能不包含会话ID、版本号等 有状态页面存储在服务器上,以便稍后在会话中使用(例如,用于AJAX通信或浏览器的后台功能)。对于每个请求,总是新创建无状态页面 页面版本控制为每个请求创建一个页面实例版本,并将其存储在会话中。每个版本都有一个会话唯一id,该id在页面链接中用于直接寻址特定版本。url如下所示(“8”表示此会话中配置文件页面的第8个版本):http://.../wicket7/profil

Wicket为页面和页面链接(afaik)提供以下概念:

可书签链接不依赖于任何会话信息。URL可能不包含会话ID、版本号等

有状态页面存储在服务器上,以便稍后在会话中使用(例如,用于AJAX通信或浏览器的后台功能)。对于每个请求,总是新创建无状态页面

页面版本控制为每个请求创建一个页面实例版本,并将其存储在会话中。每个版本都有一个会话唯一id,该id在页面链接中用于直接寻址特定版本。url如下所示(“8”表示此会话中配置文件页面的第8个版本):
http://.../wicket7/profile?8

Wicket文档提到了以下内容:

  • 无状态页面始终具有可书签链接(有意义…)
  • 不可书签的链接总是指向有状态的页面(好的,逻辑相反…)
  • 有状态页面可能同时具有可书签链接和不可书签链接
有状态页面似乎总是进行版本控制。但我相信,在某些情况下,您希望存储页面,但不希望对其进行版本控制。此外,在我看来,版本化页面没有可书签链接,因为版本id依赖于会话。这就是我的问题:

有状态页面是否始终进行版本控制?是否有一种良好的做法可以关闭版本控制但继续存储有状态的页面

如果您不想在url中有“version”,我建议将以下代码添加到您的Application.init中

getRequestCycleSettings().setRenderStrategy(RenderStrategy.ONE_PASS_RENDER);

查看更多信息。

您不希望存储页面的多个版本,或者在URL后面附加一个数字,这两种方法都是:版本控制需要URL中的页面id(如“…profile?8”),这使得它们不可作为书签(对我来说是一个缺点)。如果我不需要版本控制,那么我希望ID从url中消失(它们不是必需的)。这将导致可设置书签的URL。这有意义吗?我怎样才能做到这一点呢?
?8
不会阻止书签,也不会重新创建页面的状态。它只告诉Wicket该页面是会话中的第8个页面,并且有相关的状态。但是,如果您的页面安装在例如
/profile
下,并且具有无参数构造函数(或具有PageParameters的构造函数),则Wicket能够实例化该页面,
?8
将更改为会话的当前页面指针。