1

我正在尝试使我的项目的页面完全无状态(更多页面来)并摆脱页面版本号,例如/mypage/?0

页面设置statelessHint为 true,我也验证了onBeforeRender返回isStatelesstrue。我还使用@StatelessComponent注释来确保页面及其子组件真的是无状态的。

所以,似乎一切都是无状态的,但是版本参数仍然附加到 URL

我无法附上代码,因为它是一个包含许多组件和大量继承的庞大结构。当然,我不希望任何人告诉我哪里有问题,而是希望有人给我一个提示,什么时候在 Wicket 的源中放置断点以找出问题所在。例如,谁能告诉我哪个 Wicket 类负责决定是否附加版本参数?

在此先感谢,彼得

4

2 回答 2

5

要验证页面是无状态的,您必须调用Page#isPageStateless而不是Page#isStateless.

为了完整起见,我还要提到它@StatelessComponent本身什么也不做,但你必须安装StatelessCheckerwith

getComponentPreOnBeforeRenderListeners().add(new StatelessChecker());

Application#init. 我认为它工作得很好,它应该找到任何有状态的组件。

于 2013-01-17T08:32:35.107 回答
2

显然,@StatelessComponent在所有子组件中并不总是可靠的:(

您可以通过将日志级别设置为org.apache.wicket.Pageto来调试它DEBUG,这会在控制台输出中添加大量行。Grep 表示“不是无状态的,因为”来查找有关渲染的有状态组件的消息。

就我而言,它是一个Image,其getStatelessHint()方法返回false(不知道为什么)。

于 2013-01-16T18:44:29.937 回答