我正试图使我的项目完全无状态的页面(更多的页面来),并通过做摆脱页面版本号,例如/mypage/?0
页面将statelessHint
设置为true,我也在onBeforeRender
中验证了isStateless
返回true。我还使用@StatelessComponent
注释来确保页面及其子组件确实是无状态的。
所以,似乎一切都是无状态的,但是版本参数仍然追加到URL
我不能附加代码,因为它是一个包含许多组件和大量继承的巨大结构。当然,我不指望任何人告诉我哪里有问题,而是希望有人给我一个提示,什么时候在Wicket的源代码中放置一个断点,以找出哪里出了问题。例如,谁能告诉我哪个Wicket类负责决定是否附加版本参数?
提前感谢,彼得。
要验证页面是无状态的,您必须调用Page#isPageStateless
而不是Page#isStateless
。
为了完整起见,我还将提到@StatelessComponent
本身不做任何事情,但是您必须使用
StatelessChecker
。getComponentPreOnBeforeRenderListeners().add(new StatelessChecker());
in Application#init
。我认为它工作得很好,它应该找到任何有状态的组件。
显然,@StatelessComponent
并不总是可靠的,直到所有的子组件:(
您可以通过将org.apache.wicket.Page
的日志级别设置为DEBUG
来调试它,这会向控制台输出添加大量行。Grep for " not stateless because"查找有关呈现的有状态组件的消息。
在我的例子中,它是一个Image
,其getStatelessHint()
方法返回false
(不知道为什么)。