无状态票据页面仍然有页面版本URL参数追加-如何调试



我正试图使我的项目完全无状态的页面(更多的页面来),并通过做摆脱页面版本号,例如/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(不知道为什么)。

最新更新